scanf 和scanfEOF的區別

2022-12-05 10:46:19 字數 5032 閱讀 5573

1樓:手機使用者

如:scanf("%d,%d", &a, &b);

如果a和b都被成功讀入,那麼scanf的返回值就是2如果只有a被成功讀入,返回值為1

如果a和b都未被成功讀入,返回值為0

如果遇到錯誤或遇到end of file,返回值為eof。

你上邊的兩個都是看返回值來判斷的 至於while(~scanf("%d",&n)) 沒用過

t>>=1 即t = t >> 1 右移一位 再賦值 應該是

2樓:堵寄靈

~是位運算子,不是關係運算子,原資料型別是什麼得到就是什麼型別,不是bool型別,不可以作為條件判斷。

3樓:匿名使用者

scanf返回值為讀入的元素數目

~為按位取反

(若32位情況下)

eof是 -1 , 二進位制表示為 0xffff ,即0x11111111..1111(全1)

!=eof ,即不等於 -1 ,不等於 0xffff。此時while迴圈內語句執行

~scanf為真 即其!= 0xffff  因為至於當一個數為0xffff時,~這個數才有可能為0,即只有-1的取反是0;故當返回值不等於-1時,其取反不為0,此時while迴圈內語句執行。

故在這種情況下,兩者相同,即決定何時退出迴圈體。

while(scanf("%d",&n)!=eof)與while(scanf("%d",&n))有什麼區別!!急求

4樓:

好吧,我來回答剩下的問題while(~scanf("%d",&m)) 『~』是取反符號,這就是說,只要scanf錄入的不是符合要求的值,就會停止錄入,^z,^c都會退出,如果是非%d的輸入流,就會出現根據編譯器不同的結果……具體的我也不是很清楚,自己試試吧~

5樓:熱情牛肉炒飯

知識1:只有-1取反(~-1)是0

知識2:scanf讀入到eof時返回-1

所以,while(~scanf)就是不斷讀取執行迴圈,直到eof(和while(scanf("%d",&n)!=eof)一個意思)。一般這種用法在oj(確保資料正確)上使用,平常真的用不到

6樓:匿名使用者

如:scanf("%d,%d", &a, &b);

如果a和b都被成功讀入,那麼scanf的返回值就是2如果只有a被成功讀入,返回值為1

如果a和b都未被成功讀入,返回值為0

如果遇到錯誤或遇到end of file,返回值為eof。

你上邊的兩個都是看返回值來判斷的 至於while(~scanf("%d",&n)) 沒用過

t>>=1 即t = t >> 1 右移一位 再賦值 應該是

7樓:

你試試把標準輸入流重定向到一個檔案,看兩種寫法有沒有區別罷。

t>>=1 就是 t = t >> 1

很多算符都有這種寫法,比如 +=, -=, *=, /=, %=, ^=……

8樓:匿名使用者

最後一個簡單

就是t = t>>1;右移一位操作.相當於除以2.

scanf的返回值是正確讀入的元素個數,後面那個while(~...)沒見過,但是意義很明顯,正常情況是返回1,~表示按位取反,對1取反,這樣其實沒有多少實際意義.

scanf!=eof常常用於判斷是否結束輸入( ctrl+z(windows下)或者ctrl+d(unix下) )

while(scanf)即表示根據正確讀入變數個數判斷是否結束輸入,這常常會出意想不到的出錯.

簡單實驗一下應該可以得到較滿意的答案.

9樓:說歷史的大白

scanf()函式返回成功賦值的資料項數,讀到檔案末尾出錯時則返回eof。

~ 按位取反運算子

>>=右移後賦值運算子

10樓:匿名使用者

你記得 t+=1

==》 t=t+1;

t>>=1

==>> t=(t>>1);

while(~scanf("%d",&a))和while(scanf("%d",&a)!=eof)有區別嗎?

11樓:風若遠去何人留

完全一樣

~scanf("%d",&a) 等效於 (~scanf("%d",&a))!=0

而如果~n值為0, 說明n的各個位都是1, 也就是n=0xffffffff

對於有符號數(scanf返回值是int型。) 也就是-1所以 ~scanf("%d",&a) 和scanf("%d",&a)!=-1 是等效的

eof在c的定義中,值就是-1

12樓:

二者效果是一樣的,都是scanf("%d",&a)返值為-1時停止迴圈,否則繼續迴圈。

13樓:哈

補充一下「~」是取反的意思,就是取一個數的二進位制反碼

而語句的值為0時為假 不為0時為真

while(scanf("%d",&n)!=eof)與while(scanf("%d",&n))有什麼區別!!急求

14樓:羊聽雲袁鶯

好吧,我來回答剩下的問題while(~scanf("%d",&m))

『~』是取反符號,這就是說,只要scanf錄入的不是符合要求的值,就會停止錄入,^z,^c都會退出,如果是非%d的輸入流,就會出現根據編譯器不同的結果……具體的我也不是很清楚,自己試試吧~

15樓:裴夏瑤邴珍

scanf()函式返回成功賦值的資料項數,讀到檔案末尾出錯時則返回eof。

~按位取反運算子

>>=右移後賦值運算子

16樓:騎南煙叔潔

最後一個簡單

就是t=

t>>1;右移一位操作.相當於除以2.

scanf的返回值是正確讀入的元素個數,後面那個while(~...)沒見過,但是意義很明顯,正常情況是返回1,~表示按位取反,對1取反,這樣其實沒有多少實際意義.

scanf!=eof常常用於判斷是否結束輸入(ctrl+z(windows下)或者ctrl+d(unix下))while(scanf)即表示根據正確讀入變數個數判斷是否結束輸入,這常常會出意想不到的出錯.

簡單實驗一下應該可以得到較滿意的答案.

17樓:凌瀅瀅花世

scanf("%d",

&n)是輸入一個值。

while(

scanf(..)

!=eof

)就是一直從讀取資料中

判斷讀到一個eof標記為止

eof是

endof

line的意思,也就是行結束標識

18樓:羅豫柳翊

如:scanf("%d,%d",

&a,&b);

如果a和b都被成功讀入,那麼scanf的返回值就是2如果只有a被成功讀入,返回值為1

如果a和b都未被成功讀入,返回值為0

如果遇到錯誤或遇到end

offile,返回值為eof。

你上邊的兩個都是看返回值來判斷的

至於while(~scanf("%d",&n))沒用過t>>=1即t=

t>>1右移一位

再賦值應該是

c語言中while(scanf(%c,&a)!=eof)的用法,要詳細解釋

19樓:it圈新鮮事

while(scanf(%c,&a)!=eof),這個是如果讀取正確,則一直讀取資料。

陣列直接用a,是指傳遞了a陣列的首地址,根據a的偏移量讀取資料。a是指單獨賦值陣列中的某個值。

儲存字串用字元陣列,可以直接賦值,也可以按照下標賦值,按照下標賦值需要在結尾手動新增「\0」。

while(scanf("%c", &ch)!=eof)什麼意思?

20樓:匿名使用者

eof是一個巨集,代表檔案結束

這個的意思就是隻要拿到的字元不是eof就繼續迴圈。

21樓:尋秦記記

從標準輸入輸入字元,直到遇到結束符為止

while(scanf("%d",&n)!=-1)和while(scanf("%d",&n)!=eof)有什麼區別??

22樓:匿名使用者

eof是檔案結束符,它的值可以是-1,也可以是別的。

比如文字檔案中,資料都是用ascii**存放,其值的範圍是0~255,不可能出現-1,因此可以用eof作為檔案結束標誌。

在這裡沒有區別

c語言while(scanf("%d",&n)!=eof)是什麼意思?

23樓:匿名使用者

scanf("%d", &n) 是輸入一個值。

while( scanf(..) != eof ) 就是一直從讀取資料中 判斷 讀到一專個eof標記為止

eof 是 end of line的意思,也就是行結束屬標識

24樓:匿名使用者

scanf("%d", &n) 是從標準輸入讀入一個整數賦值給n,並且返回值是讀入的值。

while( scanf(..) != eof ) 就是一直從讀取數專據,直到讀到一個屬eof標記為止

eof 是 end of line的意思,也就是行結束標識

25樓:sweet丶奈何

如:scanf("%d,%d", &a, &b);

復如制果a和b都被成功讀入,那麼scanf的返回值就是2如果只有a被成功讀入,返回值為1

如果a和b都未被成功讀入,返回值為0

如果遇到錯誤或遇到end of file,返回值為eof。

上邊的兩個都是看返回值來判斷的 至於while(~scanf("%d",&n)) 沒用過

t>>=1 即t = t >> 1 右移一位再賦值。

c語言中scanf和printf函式的問題關於雙精度

其實嚴格來說 兩個是一樣的 輸入的時候要用 lf 輸出的時候也要用 lf 的 f能輸出double 我也不懂 哈哈 你就按照 double 對應 lf 理解就可以了能輸出不影響 lf 不能輸入輸出double的時候再問也不遲 lf長浮點型,f浮點型 1f 小數點後1位 如果是 輸出printf 的輸...

c語言printf和scanf中的2c是什麼意思

printf為輸出,scanf為輸入,2c輸入或輸出字元,寬度為2 在printf函式中如果輸出的超過2個字元還是會按原來的字元 如果不足2個字元 會補空格。輸出字元的固定長度為2.如 char s a printf 2c s 輸出為 空格a 指定欄位寬度 c是輸出字元 當前的意思是 輸出一個字元 ...

c語言中scanf裡面要求輸入的變數也要初始化嗎

int scanf const char format,scanf 函式是格式化輸入函式,它從標準輸入裝置 鍵盤 讀取輸入的資訊。其呼叫格式為 scanf 格式化字串 地址表 函式 scanf 是從標準輸入流 stdio 中讀內容的通用子程式,可以讀入全部固有型別的資料並自動轉換成機內形式。你的下面...