gpt4 book ai didi

c - 为什么逗号运算符似乎不能在我的代码中的 "if"语句和 "else"语句之间工作?

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:42 25 4
gpt4 key购买 nike

我知道像下面这样的语句(用逗号代替分号)看起来很奇怪:

 if(a<b)printf("Hello\n"),a+=5,b/=5,printf("%d,%d",a,b);

但它工作得很好,我读到这是因为 comma 在这里充当序列点。我能理解这一点。但我只是不明白为什么下面的失败,我有也使用了 else:

  if(a<b)printf("Hi\n"),else printf("Bye\n"),a+=5,b/=5,printf("%d,%d",a,b);

它给出了错误expected expression before 'else'

为什么第二个语句会报错?在第一个语句中,我们看到comma作为一个序列点。那为什么它在else之前不这样做呢? ?导致错误的第二种情况有什么特别之处?这是我的完整程序:

#include<stdio.h>

int main(void)
{
int a=30,b=45;

//if(a<b)printf("Hello\n"),a+=5,b/=5,printf("%d,%d",a,b); //Works well
if(a<b)printf("Hi\n"),else printf("Bye\n"),a+=5,b/=5,printf("%d,%d",a,b);
}

最佳答案

逗号运算符需要一个表达式,if else 结构的 else 部分不是表达式。因此,逗号后跟关键字 else 是语法错误。

关于c - 为什么逗号运算符似乎不能在我的代码中的 "if"语句和 "else"语句之间工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16582301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com