c++while循环

来源:百度知道 编辑:UC知道 时间:2024/07/04 03:43:07
#include <iostream>
#include <iomanip>
#include<conio.h>
using std::cin;
using std::cout;
using std::endl;

int main() {
int n = 0;
cout << "How many integers do you want to sum: ";
cin >> n;

int sum = 0;
int i = 1;
cout << "Values are: " << endl;
while(i <= n) {
cout << std::setw(5) << i;
if(i%10 == 0)
cout << endl;
sum += i++;
/************************************************************************************************
问题1:
在这里第一次i的返回值为什么是2?编码中没这个指令呀?如果在 sum += i++;这句前加i=i++;结果也是对的。
这是怎么回事?
问题2:
如果在这里 输入cout<<i;(我想就是看看i回while的返回值,填上这句话后为什么就不对了?
************************************************************************************************/

(1)sum += i++;
这里已经i++了,所以i由1变成了2;
(2)这句前加i=i++;结果也是对的
当然不对了,不知道你怎么弄的.估计是你加了以后没重新编译;
没加:
How many integers do you want to sum: 5
Values are:
1 2 3 4 5
Sum is 15
加了以后:
How many integers do you want to sum: 5
Values are:
1 3 5
Sum is 12
(3)如果在这里 输入cout<<i;(我想就是看看i回while的返回值,填上这句话后为什么就不对了?
怎么不对了.
How many integers do you want to sum: 5
Values are:
12 23 34 45 56
Sum is 15
Press any key to continue
1后边的2,第二个2后边的3,第二个3后边的4....
就是i回while的返回值.
因为cout << std::setw(5) << i;输出i的值之后,然后执行了cout<<i;中间没任何间隔,所以两次输出就连在了一起.

再说一点i=i++;其实就是i++;
一楼说什么逻辑错误,纯粹瞎说。
但 sum += i++;这个写法确实不好,很容易出错的。

这些问题都很简单,不知道楼主怎么学的.有问题多问老师还有同学,在百度上是得不到什么好答案的.再就是多上机练,多想.认真点.
希望我的回答对你有用.

问题1:
在这里第一次i的返回值为什么是2?编码中没这个指令呀?如果在 sum += i++;这句前加i=i++;结果也是对的。
第一次sum循环sum=1 不会是2的。。。
你在前面写了i=i++;(这句话