广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 3890 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
billy7074396 手机
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x2 鲜花 x25
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[C/C++][求助] 求救啊!!这个运算式有详解吗??
  这样的答案会是64


  但是我用手算实在是不知道为甚么会是64

..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



献花 x0 回到顶端 [楼 主] From:台湾中华电信股份有限公司 | Posted:2013-11-02 17:40 |
ebolaman 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖

级别: 副版主 该用户目前不上站
版区: 程式设计
推文 x38 鲜花 x458
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

(1.) 等于 a = y *= (x%y > x-y ? --x : y++);
(2.) 等于 a = y *= (0 ? --x : y++);
(3.) 等于 a = y *= y++;

注意不同的编译环境下可能对 y *= y++ <Y = -8> 有不同的定义
例如在 GNU C++ 中结果是 56
在 GNU C 中结果是 64
在 Visual Studio C++ 中结果是 64

手算的话,(1.) 看起来等于 (2.) 但是实际上组合语言完全不同,答案会有落差,
(2.) 会被编译器优化成 (3.) 造成手算答案难以判断

此题实际正解是 56 (GNU C/C++ & VS C++)
程式设计上最好避免这种状况,以免在不同的编译环境下产生不同的结果

详细请参考 C/C++ Sequence Point 和 Side Effects


My BOINC stats :

献花 x1 回到顶端 [1 楼] From:台湾宽频通讯顾问股份有限公司 | Posted:2013-11-03 14:35 |
billy7074396 手机
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x2 鲜花 x25
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

感谢感谢!!! 分析得很清楚!!!

因为考试题库有这题 可我就是算出来却总是怪怪的! > <

感谢解答~~


献花 x0 回到顶端 [2 楼] From:台湾中华电信股份有限公司 | Posted:2013-11-04 21:55 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.109836 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言