在VC编程中,你是不是发现一个程序在最优化后,其运行行为就不是你想要的,而在不优化的时候,却表现出是你想要的,神奇吧?OK,带你来看其中一种这种情况:

在VC2005中的一个c++ 返回值为bool类型的函数,该bool类型函数的默认返回值应该true还是false ? 不一定是true也不一定是false , 而是随着编译优化选项而变化。具体进行了如下测试

#include <iostream>
using namespace std;

//测试test函数4种优化情况的返回值结果如下:

//不优化             /od false 
//最小体积优化  /o1 true
//最大速度优化 /o2 true
//完全优化         /ox true

bool test(bool b)
{
 if (b)
 {
  return true;
 }
}
int _tmain(int argc, _TCHAR* argv[])
{

if (test(false))
 {
  cout<<"true"<<endl;
 }
 else
 {
  cout<<"false"<<endl;
 }

return 0;
}

总结:其实并不是编译器的错,而是代码写得不够严格和规范O(∩_∩)O哈哈~

当然,其实只要注意编译器的警告选项就行了:

f:\2013\algorithm\algorithm\algorithm.cpp(106) : warning C4715: 'test' : not all control paths return a value

VC2005编译优化选项之玄机相关推荐

  1. ARM嵌入式编译器编译优化选项 -O

    Arm嵌入式编译器可以执行一些优化来减少代码量并提高应用程序的性能.不同的优化级别有不同的优化目标,不仅如此,针对某个目标进行优化会对其他目标产生影响.比如想减小生成的代码量,势必会影响到该代码的性能 ...

  2. Visual Studio 编译优化选项:Debug与Release、禁止优化与O1、O2、Ox优化

    Debug与禁止优化 Debug模式是调试模式,会有很多冗余的调试代码,供开发者调试程序使用. VS是默认使用Debug模式的,我使用的是VS 2017. 在Debug模式下,是默认开启禁止优化的,我 ...

  3. gcc 优化选项 -O1 -O2 -O3 -Os 优先级

    Gcc 编译优化简介 gcc 提供了为了满足用户不同程度的的优化需要,提供了近百种优化选项,用来对{编译时间,目标文件长度,执行效率}这个三维模型进行不同的取舍和平衡.优化的方法不一而足,总体上将有以 ...

  4. GNU编译优化级别-O -O1 -O2 -O3

    最近做一个算法的GPU加速,发现实际上使用gcc的-O3(最高级编译优化)选项,可以获得很高的加速比,我的程序里达到了3倍的样子,有时效果甚至比GPU加速好.因此小小学习了下GNU的编译优化. 附言一 ...

  5. makefile工作笔记0002---gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 相关博客http://blog.chinaunix.net/uid-24954950-id-295 ...

  6. 【GCC编译优化系列】究竟什么样的代码会导致函数调用的栈溢出呢?

    [GCC编译优化系列]究竟什么样的代码会导致函数调用的栈溢出呢? 一段看似铁定栈溢出的函数代码,它一定会溢出吗? 文章目录 1 问题现场 2 简单分析 3 深入分析 3.1 假如不考虑编译优化的情况 ...

  7. gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化【转】

    转自:http://blog.csdn.net/qinrenzhi/article/details/78334677 相关博客http://blog.chinaunix.net/uid-2495495 ...

  8. gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化

    相关博客http://blog.chinaunix.net/uid-24954950-id-2956476.html 相关博客http://blog.csdn.net/misiter/article/ ...

  9. g++代码编译用选项-O3前后对比,前后执行时间对比如下

    g++代码编译用选项-O3前后对比,前后执行时间对比如下 g++ -std=c++11  main.cpp blur.cpp initialize_beliefs.cpp move.cpp norma ...

  10. python3 编译优化 --enable-shared --enable-optimizations

    python3 编译示例: ./configure --prefix=/usr/local --enable-shared  --enable-optimizations --enable-share ...

最新文章

  1. 74HC595的使用
  2. intellij_使用IntelliJ ..已经2周了,到目前为止还算不错
  3. 实现人脸识别性别之路---open CV将图片显示出来
  4. python3源代码_Python3源代码编译安装
  5. Netty学习笔记(三)EventLoopGroup开篇
  6. 华为系统更新后通知栏变大了_苹果发布多款系统更新,包括面向老机型推送iOS 12.5...
  7. couchdb java 连接_CouchDB客户端开发—Java版
  8. python百分比堆积条形图_Pandas 堆积条形图中的元素顺序 - python
  9. rabbitmq多个消费者同时接收_提升RabbitMQ消费速度的一些实践
  10. 动易访问mysql_服务器如何设置动易系统数据库路径的方法
  11. Html + Java登录验证码实现代码
  12. HTML生成一维码(带条码
  13. 全网最全编程学习网站汇总
  14. 广告市场VUCA时代来了!怎么办?
  15. 500左右高清音质游戏蓝牙耳机,百元级优质性能大牌平替蓝牙耳机
  16. android图片分辨率改变,Android实现改变一个图片的像素值
  17. 下载FLV资源的几种办法
  18. C#程序设计之windows应用程序设计基础
  19. 激光雷达SLAM激光的前端配准算法
  20. Eclipse 配置JDK

热门文章

  1. kettle 使用教程(入门)
  2. 3.6 矩阵秩的其它重要关系
  3. 基于C语言通讯录管理系统编程设计
  4. Tomcat的乱码问题解决(最全面)
  5. vsftpd 虚拟用户详细配置
  6. jmeter常见面试题
  7. Ubuntu18.04安装COMSOL 5.3a
  8. Maven下载及安装教程
  9. vue3快速上手(尚硅谷视频笔记)
  10. 关于视频分析技术在工业工程中的应用:ECRS工时分析软件