文章

17

粉丝

111

获赞

17

访问

11.9k

头像
为什同一段代码输出不一样?
我要提问
发布于2023年6月11日 15:44
阅读数 759

 

#include <stdio.h>
int main (){
	int i,a[10];
	for(i=0;i<10;)
	 a[i++]=2*i+1;
	for(i=0;i<=9;i++)
	 printf("%d ",a[i]);
	printf("\n%d %d\n",a[11/2],a[10/2]);
	return 0;
	 
} 

登录查看完整内容


登录后发布评论

3 条评论
想想 VIP
2023年6月11日 18:56

从逻辑上来看,第二个应该是对的吧;第一个会不会出现了什么编译bug,使i第一次运算变成了1。可以多编译运行几次看看

赞(0)

persist : 回复 想想: a[i++]=2*i+1;不应该是左边i++用的是i,右边用那个i=i+1计算然后得出来第一个式子嘛,

2023年6月11日 22:06

想想 : 回复 persist: 有道理,是的,查了一下。 C语言标准规定:=运算符在执行赋值操作前会先对左右操作数进行运算,但是运算的方向不确定可能先算左边后算右边,也有可能先算右边后算左边,赋值操作会在运算完成后执行,且赋值的方向必须为右操作数给到左操作数 第一个应该就是先算了左边,使i变成了i+1,然后再算的右边; 第二个应该就是先算了右边,再算的左边。

2023年6月12日 08:18