for语句
#include <stdio.h>int main()
{
int i, j, a;
for (i = 0; i != 10, j != 10; i++, a++)
{
for (j = 0; j < 10; j++)
{
putchar('A');
}
printf("%d\n", a);
}
putchar('\n');
return 0;
}
输出: for (i = 0; i != 10, j != 10; i++, a++)
^~
|=
这是什么错误?
@风车呼呼呼 for (i = 0; i != 10, j != 10; i++, a++) jhq999 发表于 2022-6-28 12:35
for (i = 0; i != 10, j != 10; i++, a++)
那个红色的是啥?逗号?
我中间打了一个逗号 i != 10 && j != 10 风车呼呼呼 发表于 2022-6-28 12:40
i != 10 && j != 10
为什么不能用逗号隔开呢,以前不是都是这样吗
Weabu 发表于 2022-6-28 12:44
为什么不能用逗号隔开呢,以前不是都是这样吗
从来都不行,只有前后可以用逗号写多个表达式,分别作初始条件和每轮循环后要做的变化。中间是判断条件,要么真要么假。如果硬要说是逗号表达式,那么逗号表达式的值是最后一个表达式的值,即 j != 10 为真整体就为真,反之整体为假,与 i != 10 是否满足就无关了。关系表达式 A && B ,A、B同时为真才为真,A || B,A、B有一个是真就为真,如果你企图用逗号来表示两个都要满足,又该如何表示逻辑或呢 本帖最后由 桃花飞舞 于 2022-6-28 19:40 编辑
Weabu 发表于 2022-6-28 12:44
为什么不能用逗号隔开呢,以前不是都是这样吗
逻辑判断,以前是for(; ;)这样的。两个分号之间是真或假。要不然for(;;)循环怎么和do{}while(); while(){}这些小括号里也是判断的等价呢? Weabu 发表于 2022-6-28 12:44
为什么不能用逗号隔开呢,以前不是都是这样吗
for (表达式, 条件语句, 表达式)
表达式可以多个,
但条件语句只能一个,如:
true and true
true and true and true
不能 true, true
桃花飞舞 发表于 2022-6-28 19:37
逻辑判断,以前是for(; ;)这样的。两个分号之间是真或假。要不然for(;;)循环怎么和do{}while(); while( ...
好的,谢谢回答 傻眼貓咪 发表于 2022-6-29 11:19
for (表达式, 条件语句, 表达式)
表达式可以多个,
好的,谢谢回答
风车呼呼呼 发表于 2022-6-28 13:01
从来都不行,只有前后可以用逗号写多个表达式,分别作初始条件和每轮循环后要做的变化。中间是判断条件, ...
#include <stdio.h>
int main()
{
int i, j;
for (i = 0; i != 10, j != 10; i++)
{
for (j = 0; j < 10; j++)
{
putchar('A');
}
}
putchar('\n');
return 0;
}
那为什么论坛里面这个是可以的呢 Weabu 发表于 2022-6-29 12:50
#include
int main()
"可以"是指什么?这个和你刚开始的那个甚至 j 都没有初始化,如何去判断 j != 10 呢?初始化之后是可以运行出来,但那是作为逗号表达式来解释,即真假仅由最后一个表达式决定,肯定不是编写初衷。这都属于语义错误,编译器只能给你查出语法错误,不可能知道你实际想做什么
页:
[1]