• 在c++17下,程序的输出是什么?(有可能编译出错,有可能输出未知,有可能是未定义行为)
点击查看代码
#include<iostream>

void foo(unsigned int) {std::cout<<"uint";}
void foo(int) {std::cout<<"int";}
void foo(char) {std::cout<<"char";} int main(){
char a=1;
char b=2;
foo(a+b);
return 0;
}

答案
输出未知,根据不同实现会有不同结果

char类型在c++中,根据不同平台会拥有不同的符号属性和表示范围。
从c++11开始,char的符号属性将依据编译器和目标平台。ARM和PowerPC默认是无符号,
而x86和x64默认是有符号的。同时char的位数则是根据宏CHAR_BIT(在c头文件climits中)。
c++的基本二元运算符在进行运算时会进行一些类型转换,对于整数来说,它们都需要进行整型提
升。
简略来说为:在计算式,首先会把各个数提升到int,如果int无法表示,那就升到unsigned int。
以题目为例,正常来说int足够表示char的所有值,所以一般调用foo(int),但是在特定平台下,
比如16位计算机同时设定char为无符号,这时int无法表示char,所以会提升到unsigned int,
调用foo(unsigned int)。
所以此程序的输出是未知的,取决于平台的实现。

最新文章

  1. 从头开始db-oracle
  2. 【转】nginx优化 突破十万并发
  3. POJ1011
  4. Gitlab. Disable user creation on welcome page
  5. PHP学习之路 (2)
  6. 【Permutations II】cpp
  7. C语言中不同类型的循环(Different types of loops in C)
  8. js获取浏览器窗口的大小
  9. C# DataTable 转换成JSON数据
  10. Python之路【第六篇】:Python迭代器、生成器、面向过程编程
  11. 修改rpm中的文件重新打包
  12. springboot 使用 redis
  13. 一个简单的定向python爬虫爬取指定页面的jpg图片
  14. 厉害了,Spring Cloud for Alibaba 来了!
  15. Struts2中文件上传下载实例
  16. 在IDEA中实战Git-branch
  17. PHP通过PDFParser解析PDF文件
  18. 如何判断 ios设备的类型(iphone,ipod,ipad)
  19. [Javascript] Function Expression Ex, Changing Declarations to Expressions
  20. 【php】基础学习2

热门文章

  1. 使用docker-compose安装Prometheus
  2. Vue3解决ElementPlus Drawer或弹出对话框不生效的问题
  3. 2022-08-21-Freewind主题_cdn替换版
  4. 1.关于SPring Boot项目的创建
  5. JavaScript中通过按回车键进行数据的录入
  6. JS逆向实战2--cookie-AcwScV2加密—某招标信息网
  7. Substring 在BCL和CLR里面搞了啥
  8. Java自定义排序:继承Comparable接口,重写compareTo方法(排序规则)
  9. C#自定义控件开发(1)
  10. 聊聊FASTER和进程内混合缓存