亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

while(scanf("%d",&n)!=EOF)與while(scanf("%d",&n))!

while(scanf("%d",&n)!=EOF)與while(scanf("%d",&n))!

C++
侃侃無極 2021-02-19 15:11:29
另外while(~scanf("%d",&n))與上面的兩個有什么關系沒有還有有些程序中會出現t>>=1這個中間的符號是什么意思啊,忘大神指教?。?!在線等哦
查看完整描述

3 回答

?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

如:
  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 右移一位 再賦值 

查看完整回答
反對 回復 2021-03-16
?
森欄

TA貢獻1810條經驗 獲得超5個贊

知識1:只有-1取反(~-1)是0
知識2:scanf讀入到EOF時返回-1
所以,while(~scanf)就是不斷讀取執行循環,直到eof(
和while(scanf("%d",&n)!=EOF)一個意思
)。一般這種用法在oj(確保數據正確)上使用,平常真的用不到

查看完整回答
反對 回復 2021-03-16
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

最后一個簡單
就是t = t>>1;右移一位操作.相當于除以2.
scanf的返回值是正確讀入的元素個數,后面那個while(~...)沒見過,但是意義很明顯,正常情況是返回1,~表示按位取反,對1取反,這樣其實沒有多少實際意義.
scanf!=EOF常常用于判斷是否結束輸入( ctrl+Z(windows下)或者ctrl+D(unix下) )
while(scanf)即表示根據正確讀入變量個數判斷是否結束輸入,這常常會出意想不到的出錯.
簡單實驗一下應該可以得到較滿意的答案.

查看完整回答
反對 回復 2021-03-16
  • 3 回答
  • 0 關注
  • 560 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號