以下に示すコードでは、何も印刷されません。つまり、for
ループ内の条件が失敗します。理由は何でしょうか?私は別にTOTAL_ELEMENTS
を印刷するとき、それは5
を与えるので'for'ループ条件が失敗するのはなぜですか?
私はそれが何かを印刷する必要がありますのでので、当然これは、5-2=3 => -1<=3
でなければならない、と思いまして。
#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]);
}
return 0;
}
誰かがこのコードを説明できますか?
参照:http://stackoverflow.com/questions/31361713/what-will-be-value-of-strlenstr-1-in-for-loop-condition-when-str-is-empty-in/31361751 #31361751 –
"TOTAL_ELEMENTSを別々に印刷すると5となります。" - いいえ、そうではありません。あなたがそれを複雑にする理由は何ですか? – Olaf
どのコンパイラを使うのか分かりませんが、GCCは適切なヒントを提供します: "警告:符号付き整数と符号なし整数の比較"。もちろん、すべての警告をオンにした場合。誰がこの8つの言葉(つまり8つの!)アップフォートを与えたのですか? – deamentiaemundi