C++ 为什么我运行这组代码 没错,但是不出结果,会无限的循环下去?

#include <iostream>

int main()
{ int sum=0;
for (int val=50; 50<= val <=100; ++val)
sum += val;

std::cout<<"the sum of 50 to 100 is "<<sum<<std::endl;
return 0;
}


#include <iostream>

int main()
{ int sum=0;
for (int val=50; val <=100; ++val)
sum += val;

std::cout<<"the sum of 50 to 100 is "<<sum<<std::endl;
return 0;
}
这样便可得出结果?

所以关键是val的区间. 我定义了val初始值为50,区间为大于等于50小于等于100时,执行sum+=val 和val++. 自我感觉逻辑没有问题啊? 但在编程器里逻辑不被承认,编辑器承认的逻辑是val小于100时,才会执行........

所以我想问int val=50; 50<= val <=100;他俩逻辑为何冲突?

50<=val<=100;相当于(50<=val)<=100;c++对表达式的编译顺序是从左到右(相同优先级下)
所以先判断50<=val,结果为真,表达式值为1,再判断1<=100;结果还是为真,也就是说判断条件恒为真,所以,你的循环永远无法结束
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-26
你想写的应该是

50 <= val && val <= 100

你实际写的,在编译器看来是

(50 <= val) <= 100

也就是

true <= 100

也就是

1 <= 100

恒真。
第2个回答  2012-05-26
是你的后一句又问题不能写成50<= val <=100要写成这样50<= val &&val<=100
第3个回答  2012-05-26
( val >= 50 && val <=100 )

50 <= val <=100 是为 (50<=val) <= 100 , 而50<=val的结果是真,也就是1, 1永远<=100,所以无限循环。
第4个回答  2012-05-26
for (int val=50; 50<= val <=100; ++val)//50<= val&&val <=100 写val <=100就够了 因为你前面有了val=50

C++ 为什么我运行这组代码 没错,但是不出结果,会无限的循环下去?
50<=val<=100;相当于(50<=val)<=100;c++对表达式的编译顺序是从左到右(相同优先级下)所以先判断50<=val,结果为真,表达式值为1,再判断1<=100;结果还是为真,也就是说判断条件恒为真,所以,你的循环永远无法结束

C++编程问题:为什么以下代码运行后输入数字循环正常,但输入字母就会陷入...
便还是认为enter没有输入,不会读取缓冲器的字母;因此无限循环

c语言大整数加法可以运行但是出不来结果...
所以逻辑上while是个死循环,不会再有任何结果了 而实际上是c++;发生溢出,运行时错误中断 for循环是什么逻辑?毫无意义,莫名其妙 2.还有g[i]+=d[i]+e[i];也是逻辑错误 不是累加赋值,是相加赋值 应该删掉“+”号 3.所有数组都没有赋初值 使得下列代码都有逻辑隐患 b=strlen(a);n=strlen(d...

c++中为什么代码没有报错,但是没有运行完全?
问题在你第三次输入的密码不匹配,你可以print看看test的值是多少,可能是声明问题,也可能是输入函数问题。

我用Dev-C++编程,程序代码没有错,为什呢运行后不显示结果?
又一个悲剧的,翻译以下就是:runtime_error(运行时错误)程序一切ok 如果是win7专业版或旗舰版64位系统,找到目录下的exe文件,右键--属性--兼容性--以xp兼容模式运行;

VC++6.0语法没错误,会出现没有结果,常出现的都是什么原因?
异常,在高级语言中有 try {} catch {} 是捕获和处理异常的,在C语言中你得自己找 你用SCanf();试试看程序执行到那里不执行的

为什么c语言,有时候所有代码都正确,却运行不出来和别人一样的结果?
因为原因有二,其一:你的代码跟别人的代码不一样也会有很大差别,比如你的是a++,别人的是++a。其二:编译器的不同也会出现这种情况,比如你用的编译器是VS2019,而别人用的则是DV C++

用C语言编程程序没有错误为什么结果不对
程序可以运行并不表示程序就是正确的 编译和连接都正确,只能说明编译器对他进行语法等检查 没发现他的错误而已,而既然运行结果是错误的,那就是说明一点 可能是你的算法设计的不当,不能正确的解决问题,这样发生的错误 是运行期错误,在编译连接的过程不会出错的,不过幸好,编译器也为我们 提供了一些解决...

在C++中运行程序,为什么在编译时没有问题,但是回到程序的执行时,就会...
其中最常见的是数组访问越界和野指针问题,当然也有部分野引用问题也会造成运行时崩溃。所以你要通过改变编程风格或者确保每次进行内存的相关操作的时候尽力谨慎。前者可以参考 effective C++ 系列和imperfect C++这些书。另外你编写的代码有很大的问题:Bitnode *gen;\/\/根节点 int sum;全局变量只在本文件...

C++写的代码没结果也不报错
for(n;n<1000000;n+=2)\/\/ 这里是n+=2,否则死循环 { s=-s; pi=pi+s\/n; } pi=pi*4; cout<<"pi="<<setiosflags(ios::fixed)<<setprecision(6)<<pi<<endl; return 0;}改了两个地方哈,参考下,满意请采纳。

相似回答