十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
其实是printf("等于");
创新互联公司主营沾化网站建设的网络公司,主营网站建设方案,重庆App定制开发,沾化h5微信小程序开发搭建,沾化网站营销推广欢迎沾化等地区企业咨询
先执行的,然后再执行的scanf("%d", c);
只不过scanf的时候并不是从屏幕上scanf的,而是从缓冲区scanf的
你的5其实在printf之前先进入了缓冲区,然后再printf等于,然后再从缓冲区scanf那个5
如果要想得到你那个效果的输入输出,可以试试下面的代码
#include stdio.h
void main()
{
int b, c, f;
char a;
scanf("%d %c", b, a);
printf("%d%c", b, a);
if (a == '-')
{
printf("等于");
scanf("%d", c);
f = b - c;
printf("%d %d", c, f);
}
}
不管什么终端,执行C语言代码的顺序都是差不多的
首先执行预处理,也就是#define
#ifdef之类的语句,其次是全局区变量的内存分配,即main函数外面定义的变量的定义及赋值等等,然后执行main函数,在执行main函数中调用的那些函数,再执行调用函数中的调用函数。最后编译链接生成
.o文件
是第一个执行完再执行第二个
递归调用可以这样理解,就是想像有很多个函数的复制体,每次调用自己都是在调用一个复制体,一直到满足
if(start=end)
return;
然后再一层一层返回。
for多重循环的执行顺序是先执行内部循环,再执行外部循环
通过对代码进行等价转换,按照上述原理即可知道代码的执行顺序
对于上面代码:
for(i=0;i8;i++)
for(j=0;j10;j++)
scanf("%d,%d",i,j);
它等价于下面
for(i=0;i8;i++){
for(j=0;j10;j++){
scanf("%d,%d",i,j);
}
}
从上面可以看出,每执行完一次j循环,i的值才增加1
但是注意,该代码有一个陷阱:scanf函数会改变i和j的值
实际执行顺序会受用户输入的i、j值的不同而不同
对于下面的代码
for(i=0;i8;)
min_m(i++)=i
for(j=0;j8;j++)
它等价于下面的代码:
for(i=0;i8;){
min_m(i++)=i
}
for(j=0;j8;j++){}
会先执行min_m函数8次 然后再执行j循环
注意,该代码有一个问题,就是min_m函数的返回值必须是一个左值。
这意味着某些变量的值发生了更改,可能会影响到循环。