Rabrot 发表于 2023-1-7 23:28:25

为什么不同?

#include<stdio.h>
int main(){
       
        int k;
        for (k=1,printf("%d: Hi!\n",k);k*k<26,printf("k=%d\n",k);k+=2,printf("Now k is %d\n",k))
        printf("k is %d in the loop\n",k);
        return 0;
}这样k打出来是随机数而且死循环怎么回事;

for (k=1,printf("%d: Hi!\n",k);printf("k=%d\n",k),k*k<26;k+=2,printf("Now k is %d\n",k))
这样又正常了。

洋洋痒 发表于 2023-1-8 02:56:39

谁知道呢可能是……………………………………因为爱情????

洋洋痒 发表于 2023-1-8 03:03:03




          k*k<26      ,             printf("k=%d\n",k)


   printf("k=%d\n",k)      ,    k*k<26


这俩式子叫什么?没错叫逗号表达式!


逗号表达式整体的值是什么?没错是最后一项的值!


第一个式子最后一个值是什么?没错是printf的返回值!printf的返回值是什么?没错是打印的字符个数!是不是0?不是,既然不是0就是真,循环要不要继续?要!!!!!!


第二个式子最后一个值是什么?是k*k<26现在你知道为什么了吗??????
页: [1]
查看完整版本: 为什么不同?