❶ vs中为啥for不执行循环呢
编译器判断出里面的N次循环都是干同样的事(参数一样,调用函数一样),所以就优化掉了。把在工程的属性中把优化禁止了它就老老实实照你写的傻跑N次循环了
❷ tc2编译器运行for语句的问题,不要乱扯到别的,问题真正存在,也不要复制别人的答案,只要有真实水平的进
scanf("%d",&a[i]);
❸ for语句的执行过程
for语句的一般形式为:for(单次表达式;条件表达式;末尾循环体){中间循环体;}。
for循环执行时,会先判断条件表达式是否成立,如果条件成立则执行中间循环体,执行完中间循环体后接着执行末尾循环体 。
在执行完末尾循环体后对条件表达式再次进行判断,若条件还成立,则继续重复中间循环体,当条件不成立时则跳出for循环。
(3)编译器不会执行for语句扩展阅读:
1、for语句最简形式为:
for( ; ; )
2、一般形式为:
for(单次表达式;条件表达式;末尾循环体)
{
中间循环体;
}
其中,表示式皆可以省略,但分号不可省略,因为“;”可以代表一个空语句,省略了之后语句减少,即为语句格式发生变化,则编译器不能识别而无法进行编译。
for循环小括号里第一个“;”号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量赋初值; 也可用来计算其它与for循环无关但先于循环部分处理的一个表达式。
“;”号之间的条件表达式是一个关系表达式,其为循环的正式开端,当条件表达式成立时执行中间循环体。
执行的中间循环体可以为一个语句,也可以为多个语句,当中间循环体只有一个语句时,其大括号{}可以省略,执行完中间循环体后接着执行末尾循环体。
执行末尾循环体后将再次进行条件判断,若条件还成立,则继续重复上述循环,当条件不成立时则跳出当下for循环。
❹ c语言中for的用法
printf("%d",x,y);
不会报错,printf是一个多参数的c函数,编译的时候,printf函数本身并不知道"引号"中需要多少个参数,它只是按照顺序从堆栈上取参数而已。所以用啥编译器都不会报告错误。
一个分号是一条语句,前缀先执行,后缀后执行。
❺ 关于c语言的for语句嵌套问题
要弄懂这个问题首先要明确for语句的括号里面的东西都是什么意思:
for(j
=
i
+
1;
j
<
10;
j++
)
第一个分号前的j
=
j
+
1这句的意思是初始化循环变量j。那啥叫循环变量呢?就是跟循环相关的变量,给定一个循环变量,再规定它的初始值和结束值,再规定好它每次循环增加(或减少)多少,那么你就可以控制这个循环会循环多少次了。
第一个分号和第二个分号之间的j
<
10这句的意思是规定了j的结束值。
最后一个分号之后的j++这句的意思是j每次增加1。
然后要弄懂for语句究竟是怎么执行的:
首先,执行第一句:j
=
i
+
1。打个比方,i现在是3,那么j
=
3
+
1,即j现在是4。(初始化循环变量)
然后,执行第二句:j
<
10。这个语句的作用是判断循环变量是否超过了结束值10,如果超过了就跳出这个循环,否则就接着执行下面的语句。现在j是4,所以不会结束这个循环。(判断循环变量)
然后,程序进入循环体,也就是每次循环都要干嘛,这才算真正进入了循环。(执行循环体)
最后,当运行完循环体中的语句后,执行j++。这句的作用是把循环变量j增加1,这样j就变成5了,如果没有这一句的话,那么j永远都是4,永远都小于10,,那么程序永远都不会跳出这个循环,这就变成死循环了。(改变循环变量)
好了,现在来回答你的问题:
当然不是你所说的那样,请注意/*2的那条for语句,里面循环变量j的初始化值是i+1,也就意味着这层循环究竟要循环多少次与i有关,而i是外层循环的循环变量,外层的循环每次都会i++,所以j每次的初始化值都不同,是1,2,3,4,5,6,7,8,9,10。所以相应地,内层循环每次循环的次数都不一样,是10-1=9,10-2=8,7,6,5,4,3,2,1,0。你可以把自己当做编译器按照for循环的执行顺序走一遍。
就是这样,你也可以在编程软件中单步调试看看。
❻ 为什么C++基于范围的for循环语句使用不了
应该是编译器版本较老,选用新版本的编译器,要支持C++11标准才行。
Visual Studio 2012以上
❼ C语言for语句问题
for循环的执行逻辑是:
执行初始化部分,这里就是 i = 0;
判断条件是否满足,如果不满足条件,就直接跳出循环了,条件是 a[i] < s;
执行for循环体,这里是空语句;
执行变量更新,这里是 i++;
跳转到第二部;
其中,第二部跳出的时候,程序是直接跳转到第五步之后继续执行的,也就是说,i++ 是不执行的;
所以,当i为3的时候,取值为4,a[i] < s 不成立,程序直接跳出,i++没有执行。
所以到最后,i的值是 3
❽ c51的for循环内的语句怎么不执行,编译器通过了。
for(d=0;d<40;d++ ) //循环控制变量d要变化,例如 0 到 39,步长1
循环体内的语句 有 ai=0;赋值。
条件语句条件不成立,if(ai==20) PA6=0;if(ai==10) ai=0; 这两句的赋值不执行。
反复循环执行 ai=0;PA6=1; 运行结果 总是 PA6=1;
❾ 为什么会报编译错误,为什么变量sum可能进不去for循环完不成赋值
java 对于基本数据类型的初始化默认值分为两种情况。 1. 当基本数据类型作为普通变量时,java 不会对其进行初始化,并且在未初始化的情况下引用会报编译错误 2. 当基本数据类型作为类成员变量时,java 会对其进行初始化。由此可见是这个语言强制规定初始化。基本类型作为局部变量不初始化会报编译错误。这个是强制规定。一旦jvm发现没赋值,就直接报错让你改不改不让你运行。防止很隐蔽的错误发生。
❿ 关于C语言中for语句
这个地方加个分号只是做了个空的for循环,
for(j=i+1;j<=100;j++);
其实就是
for(j=i+1;j<=100;j++)
{
;
}
没有任何意义
在c和c++中,空的“;”是正确的语法
如果你误将;写在了for循环的后边,造成的结果就是本来属于for循环的语句没有执行
例如
for(int j = i+ 1; j < 100; j ++)
printf("%d", j);
如果加了;之后就成了
for(int j = i+ 1; j < 100; j ++);
printf("%d", j);
也就是
for(int j = i+ 1; j < 100; j ++)
{
;
}
printf("%d", j);
那么就只打印了一个语句