[英]using comma operator in the body of a loop
我試圖以兩種不同的方式編寫一個while循環,並注意到在條件中使用','兩次並不像我認為的那樣工作。 我只是對實際發生的事情感到好奇。 這是代碼:
#include <stdio.h>
int main()
{
int i = 0, lim = 1000, c;
char s[lim];
while (i < lim - 1, (c = getchar()) != '\n')
{
if (c != EOF)
{
s[i] = c;
}
else
{
break;
}
++i;
}
printf("%s\n", s);
return 0;
}
#include <stdio.h>
int main()
{
int i = 0, lim = 1000, c;
char s[lim];
while (i < lim - 1, (c = getchar()) != '\n', c != EOF)
{
s[i] = c;
++i;
}
printf("%s\n", s);
return 0;
}
讓我們看看while條件:
i < lim - 1, (c = getchar()) != '\n', c != EOF
第一部分i < lim -1
沒有任何效果。 第二部分將執行c = getchar()
,但與'\n'
的比較完全丟棄。 整個條件的返回值為c != EOF
。 所以條件等價於:
(c = getchar()) != EOF
您可以做的是更改&&
的逗號運算符。
i < lim - 1 && (c = getchar()) != '\n' && c != EOF
逗號不進行復雜的邏輯運算。 您需要改用邏輯運算符
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.