国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C語言中getchar()的返回類型為什么是int詳解

C語言中getchar()的返回類型為什么是int詳解

2021-07-10 15:56標點符 C/C++

這篇文章主要給大家介紹了關于C語言中getchar()的返回類型為什么是int的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

在C語言中有個重要的庫函數getchar(),可從終端獲得一個字符的ASCII碼值。在終端輸入字符時并非輸入一個字符就會返回,而是在遇到回車換行前,所有輸入的在C語言中有個重要的庫函數getchar(),可從終端獲得一個字符的ASCII碼值。在終端輸入字符時并非輸入一個字符就會返回,而是在遇到回車換行前,所有輸入的字符都會緩沖在鍵盤緩沖器中,直到回車換行一次性將所有字符按序依次賦給相應的變量,在這里一定要注意最后一個字符即'\n',該字符也會賦給一個相應的變量(當然這要你定義的用來接收字符的變量數比你輸入的可見字符多一才可以)。

然而最近在重新閱讀K&R的《C程序設計語言》時對getchar()這個自帶的函數的返回值產生了疑惑。從字面上看,給函數返回的類型應該是char型,但在示例中,卻將返回內容賦值給了int型變量,示例代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
/* 將輸入復制到輸出 */
int main(void)
{
 int c;
 while ((c = getchar()) != EOF){
 putchar(c);
 }
 return 0;
}

書中給出的解釋為:

因為某些潛在的重要原因,我們在此使用int類型。

這里作者并沒有對重要原因給出明確的說明,我試著將int修改為char,發現程序還是能夠正常編譯與執行,這更加讓我疑惑!經過一翻搜索,找到的答案如下。

1、getchar()除了返回正常的字符外,還會返回輸入結束符EOF(end of file)。該函數原型如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
int getchar(void)
{
 static char buf[BUFSIZ];
 static char *bb = buf;
 static int n = 0;
 if(n == 0)
 {
  n = read(0, buf, BUFSIZ);
  bb = buf;
 }
 return(--n >= 0)?(unsigned char) *bb++ : EOF;
}

2、EOF通常在<stdio.h>文件中被定義為-1:

?
1
2
3
4
5
#define BUFSIZ 512
#define _NFILE _NSTREAM_
#define _NSTREAM_ 512
#define _IOB_ENTRIES 20
#define EOF (-1)

3、各種數據類型能表示的數值范圍由編譯器決定。char類型在有些編譯器中定義的范圍為0~255,另外一些編譯器中定義的范圍為-128~127。當編譯器中定義的范圍為0~255時,用char接收getchar()返回值時就會出錯。數據類型具體的定義范圍可在<limits.h>文件中找到:

?
1
2
3
4
5
6
7
#define CHAR_BIT 8
#define SCHAR_MIN (-128)
#define SCHAR_MAX 127
#define UCHAR_MAX 0xff
 
#define CHAR_MIN SCHAR_MIN
#define CHAR_MAX SCHAR_MAX

4、將int改為char后能在我的電腦上正常編譯,時由于我的編譯器中定義的范圍為-128~127,當用char接收時會隱式的轉化為char類型。

5、即使編譯器總定義的范圍為-128~127,程序也有可能出錯。雖然常見字符到127位就結束了。但是ASCII表中分配到的時256。128~256為拓展字符,如常用的歐元符號等均在內。

綜上:getchar()返回的內容用更大范圍區間的int型接收,才能使程序更加穩健。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://www.biaodianfu.com/why-getchar-return-int-in-c.html

延伸 · 閱讀

精彩推薦
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 一级一片在线播放在线观看 | 奇米成人 | av在线日韩 | 97国产一区二区精品久久呦 | 欧美一级免费 | 国产精品香蕉在线观看 | 国产一区二区三区播放 | 狠狠狠狠狠狠 | 精品国产一区二区三区av性色 | 欧美视频精品 | 一级毛片免费看 | 亚洲 欧美 日韩 在线 | av免费在线观看网站 | 欧美久久视频 | av一区二区三区四区 | 欧美日韩视频第一页 | 欧美在线观看视频 | 一区二区三区日韩在线 | 亚洲欧美一区二区三区情侣bbw | 91大神免费观看 | 福利视频在线播放 | 久久天天躁狠狠躁夜夜免费观看 | 成人精品国产免费网站 | 四虎永久免费影院 | 91av亚洲| 九九九九精品九九九九 | 99亚洲精品| 免费激情网站 | 日韩影片在线观看 | 久久久久久免费看 | 自拍视频在线 | 国产尤物av| 久久久久久久国产 | 亚洲成av人片在线观看 | 日本久久网 | 九九精品视频在线 | 高清国产一区二区三区四区五区 | 色综合视频 | 久久免费精品视频 | 久久精品国产77777蜜臀 | 久久久久久久久久亚洲 |