c循环问题,求大神教教

while(n=1/3)会陷入无限循环吗?
for(;2;)呢?
什么原理,求大神教

说到这里,你应该已经发现两个循环语句都是同一个问题,那就是是否会无限执行下去。没有循环体,不执行,是我的判断,建议你亲自执行一下代码。
我在编写其他代码时遇到过,循环判断后,默认把紧接循环判断后的一行语句作为循环体无限执行的情况,你可以测试一下
一种情况是程序只有循环语句前面,另一种情况是程序测试代码在循环后面

用插入代码片贴代码,不然有些是显示不出来的

while里面是判断的,所以应该用==而不是赋值语句;你n是什么类型的,如果没有赋初始值的话,它对应类型就会有一个默认值,这个默认值会与1/3比较的。
但是不会陷入无限循环的。
而for(;2;)第一次执行的时候,它会执行第一个分号前面的条件,由于没有则执行方法体中的程序;执行完后它会执行第二个分号后面的条件,由于没有条件,然后去
两个分号中间的进行判断,由于你这里也相当于没有条件,所以可以说你for的方法体里面是永远无条件的执行下去的,也就是无限循环;

你可以自己写一下运行试试看看。

n=1/3结果是n=0(0.3333)的小数点被截断掉了,而0->false所以不循环

for(0;2;0)中 判断表达式为2 非0 所以会一直循环。

主要是看条件是否为true,,如果为true的话就一直循环

的确,你的while 括号内只要不是false,就会执行下方的循环体中的内容。再者,while 中的判断相等应该使用==。

但你的while 只有循环判断语句,没有需要执行的循环体,如果你的while 语句后有{}循环体,就会无限循环下去,没有循环体,只有循环判断语句,我觉得是不会无线执行的。
然后就是你的for 判断,后面的括号里分成三个部分,第一个为给定初值;第二个为循环判断条件,里面的同理只要不是false

其他内容(包括2)都是被认为是true,接着执行下一次循环;第三部分一般是循环变量的自增和自减,也可以写其他代码,并不影响循环,但务必为执行代码或是空,不能为一数值或是true 和false

最后,总结一下就是,如果你的循环语句后有循环体的话,是一定会无限执行下去的,因为你两个判断的结果都是true


#if 1
#include
using namespace std;

int main()
{
int n;
while (n = 1/3)
{

}
cout << "ads" << endl;
return 0;

}
#endif


#if 1
#include
using namespace std;

int main()
{
//int n;
for (; 2; )
{

}
cout << "ads" << endl;
return 0;

}
#endif

以下是我的测试代码,亲测死循环,没有任何问题...

while(n=1/3)
整除的话n=0吧
while(0)就不做啊…如果n=2或者其他正数 就做
如果是判断语句如:n!=0什么的就循环 满足条件就跳出