文章
17
粉丝
111
获赞
访问
16.3k
#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; }
从逻辑上来看,第二个应该是对的吧;第一个会不会出现了什么编译bug,使i第一次运算变成了1。可以多编译运行几次看看
persist : 回复 想想: a[i++]=2*i+1;不应该是左边i++用的是i,右边用那个i=i+1计算然后得出来第一个式子嘛,
想想 : 回复 persist: 有道理,是的,查了一下。 C语言标准规定:=运算符在执行赋值操作前会先对左右操作数进行运算,但是运算的方向不确定可能先算左边后算右边,也有可能先算右边后算左边,赋值操作会在运算完成后执行,且赋值的方向必须为右操作数给到左操作数 第一个应该就是先算了左边,使i变成了i+1,然后再算的右边; 第二个应该就是先算了右边,再算的左边。
登录后发布评论
从逻辑上来看,第二个应该是对的吧;第一个会不会出现了什么编译bug,使i第一次运算变成了1。可以多编译运行几次看看