VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 190|回复: 1

[已解决] 关于变量自增输出的疑问

[复制链接]
32_avatar_middle
在线会员 Viming 发表于 2018-11-1 16:49:12 | 显示全部楼层 |阅读模式
3驿站币
本帖最后由 Viming 于 2018-11-1 17:08 编辑

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4.         int k = 1;
  5.         cout << "k = " << k << ", ++k = " << ++k << endl;

  6.         int ks = 23;
  7.         cout << "ks = " << ks << "," ;
  8.         cout << " ++ks = " << ++ks << endl;

  9.         return 0;
  10. }
复制代码


如上述代码,在windows的VS2015中执行,结果是
  1. k = 2, ++k = 2
  2. ks = 23, ++ks = 24
复制代码


在Linux下g++执行,结果是
  1. k = 1, ++k = 2
  2. ks = 23, ++ks = 24
复制代码


问题在于第一个k的值。在VS中同一行执行输出似乎结果是错误的,但分开是正确的,这是为什么呢?

最佳答案

查看完整内容

cout 在不同编译器中输出的顺序应该都是从左到右,但是计算顺序可能是不太一样,VC++ 中是从右到做,gcc/g++中我之前没太注意过,按照楼主上面的测试结果,那么就说明 gcc/g++ 关于 cout 的计算顺序就是从左到右了。 所以,不管在vc++下,还是在 gcc/g++下都不建议这么写到一起,一方面阅读起来容易混淆,另外一方面对于计算的结果在不同的平台下也有不一样的结果。所以最好还是分开写,这样就没有分歧了!




上一篇:想学 linux C开发
下一篇:ping ICMP

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-11-1 16:49:13 | 显示全部楼层
cout 在不同编译器中输出的顺序应该都是从左到右,但是计算顺序可能是不太一样,VC++ 中是从右到做,gcc/g++中我之前没太注意过,按照楼主上面的测试结果,那么就说明 gcc/g++ 关于 cout 的计算顺序就是从左到右了。

所以,不管在vc++下,还是在 gcc/g++下都不建议这么写到一起,一方面阅读起来容易混淆,另外一方面对于计算的结果在不同的平台下也有不一样的结果。所以最好还是分开写,这样就没有分歧了!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-11-14 20:16

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表