第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

一個謎語(在C中)

一個謎語(在C中)

C
慕虎7371278 2019-07-31 10:38:58
一個謎語(在C中)一位朋友給了我一個謎語:#include<stdio.h>#define TOTAL_ELEMENTS ((sizeof(array) / sizeof(array[0])))   int array[] = {23,34,12,17,204,99,16};   int main()   {       int d;       for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)           printf("%d\n",array[d+1]);       getchar();       return 0;   }上面的代碼應(yīng)該打印所有的數(shù)組元素,代碼中的問題是什么(輸出什么都沒有)?我認(rèn)為循環(huán)不會迭代一次?我發(fā)現(xiàn)以下代碼確實有效:#include<stdio.h>#define TOTAL_ELEMENTS ((sizeof(array) / sizeof(array[0])))   int array[] = {23,34,12,17,204,99,16};   int main()   {       int d;       int x = (TOTAL_ELEMENTS-2);       for(d=-1;d <= x;d++)           printf("%d\n",array[d+1]);       getchar();       return 0;   }我有一個理論認(rèn)為它與宏有關(guān),但我不能指責(zé)問題。
查看完整描述

3 回答

?
喵喵時光機

TA貢獻1846條經(jīng)驗 獲得超7個贊

問題是這(TOTAL_ELEMENTS-2)是一個無符號值。進行比較時d <= (TOTAL_ELEMENTS-2),兩個值都將轉(zhuǎn)換為無符號值,結(jié)果為false。

在你的第二個例子中,x簽名所以沒有問題。


查看完整回答
反對 回復(fù) 2019-07-31
?
白板的微信

TA貢獻1883條經(jīng)驗 獲得超3個贊

sizeof操作者產(chǎn)生類型的結(jié)果size_t。在第一個版本中,您將int(簽名)與size_t(未簽名)進行比較。

在第二個版本中,通過賦值將size_t表達式轉(zhuǎn)換為a int,因此比較的兩個操作數(shù)具有相同的類型。


查看完整回答
反對 回復(fù) 2019-07-31
?
慕容3067478

TA貢獻1773條經(jīng)驗 獲得超3個贊

另一種看待這個問題的方法如下

#include<stdio.h>int main() {int i = -5;unsigned int j = 6;if(i < j)
  printf("-5 is less than 6");else
  printf("-5 is greater than 6");return 0;}

輸出是:

-5 is greater than 6

原因: 將無符號整數(shù)與有符號整數(shù)進行比較將始終返回false。

在提問者的情況下, sizeof返回無符號數(shù)據(jù)類型,但它與簽名數(shù)據(jù)類型進行比較( - 是一個錯誤)


查看完整回答
反對 回復(fù) 2019-07-31
  • 3 回答
  • 0 關(guān)注
  • 446 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號