请解释为什么
案例1:
int main()
{
int i;
for(i=1;i++;i<100)
printf("%d",i);
return 0;
}
导致无限循环,而
案例2:
int main()
{
int i;
for(i=0;i++;i<100)
printf("%d",i);
return 0;
}
甚至一次都不运行循环?
请说明如何解释这种语法?
答案 0 :(得分:2)
正确的语法是
for (i=1; i<100; i++) {
something
}
实际发生了什么?
for循环有三个参数,
1.执行循环之前的初始条件或初始化。在这种情况下,将i=1
设置为i
为1
2.在每个循环的开头处检查的最终条件。如果不满足此条件,则循环中断。在这种情况下,它是i<100
。因此,如果在下一个循环开始时,i >= 100
循环被破坏
3.循环结束时的步骤或周期性操作。在这种情况下,它是i++
。在每个循环结束时,我增加1。
您的代码发生了什么
for (i=1; i++; i<100)
第一部分是好的
第二个是在每个循环开始时执行的。 i++
返回i
的值,然后递增它。 (与++i
相反,后者则相反。)因为在第一个例子中i = 1,它从1开始,第二个参数总是返回一个值>= 1
,它被解释为{{1 }}。但是在你的第二个例子中,我从0开始。所以在第一次迭代中,第二个参数返回0,这被解释为false,循环永远不会开始。
第三个是在最后执行的,并且决不会以任何方式影响循环。
答案 1 :(得分:2)
C programming language
中for循环的语法是:
for ( init; condition; increment )
{
statement(s);
}
以下是for循环中的控制流程:
首先执行init步骤,但只执行一次。此步骤允许您声明和初始化任何循环控制变量。只要出现分号,就不需要在此处添加声明。
接下来,评估条件。如果是,则执行循环体。如果为false,则循环体不会执行,控制流会在for循环之后跳转到下一个语句。
执行for循环体之后,控制流会跳回到increment语句。此语句允许您更新任何循环控制变量。只要在条件之后出现分号,此语句就可以留空。
现在再次评估条件。如果为真,则循环执行并且过程自身重复(循环体,然后递增步骤,然后再次调节)。条件变为false后,for循环终止。
init
设置i = 1
conditon
- 此处为i = 1
,其中c为true
。 (后增量会增加执行判决后的值)body
- 执行printf("%d",i);
increment
- i<100
不影响i
的值。 现在在C中,从1到无穷大的所有值,其值为true,因此执行infinetly
init
设置i = 0
conditon
- 此处i = 0
(再次发布增量)在c中为false
,因此loop
退出。 因此它甚至没有执行一次。
答案 2 :(得分:0)
试试这个:
var validator = $("#sjform").validate({
rules: {
txtname: "required"
},
messages: {
txtname: "Required"
},
errorPlacement: function (error, element) {
// error.appendTo($(element).parent().next());
error.insertAfter(element);
},
//highlight: function (element) {
// $(element).closest('.form-group').addClass('has-error');
//},
//unhighlight: function (element) {
// $(element).closest('.form-group').removeClass('has-error');
//},
highlight: function (element) {
$(element).parent().removeClass('has-success').addClass('has-error');
},
unhighlight: function (element) {
$(element).parent().removeClass('has-error').addClass('has-success');
},
errorElement: 'span',
errorClass: 'help-block',
submitHandler: function (form) {
form.submit();
}
});
答案 3 :(得分:0)
int main()
{
int i;
for(i=0;i++;i<100)
printf("%d",i);
return 0;
}
因为for
循环具有语法
for(initialize variable; condition check; increment/decrement)
您已将变量初始化为i = 0
在条件检查部分,您已经写了i++
,即帖子增量,因此i
保留0
,这意味着FALSE
,因此它将退出循环。