c++随笔测试(Corner of cpp)
- 在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)。
所以此程序的输出是未知的,取决于平台的实现。
c++随笔测试(Corner of cpp)的更多相关文章
- Beta冲刺随笔——测试
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 ...
- otool随笔测试
otool 工具 查看库/反编译等二进制信息 1 依赖库查询 otool -L Payload/XXX.app/XXX 2 查看该应用是否砸壳 otool -l Payload/XXX.app/XXX ...
- 【数据库开发】C++测试redis中的publish/subscribe
运用 http://blog.csdn.net/xumaojun/article/details/51558237 中的redis_publisher.hredis_publisher.cpp red ...
- openCV3测试指南
本文来源于https://docs.opencv.org/3.4.1/db/df5/tutorial_linux_gcc_cmake.html 经测试整理后发布 上一节安装完成了openCV,这一节进 ...
- Beta冲刺——汇总随笔
一.代码规范与计划随笔 Beta冲刺--代码规范与计划 二.凡事预则立随笔 Beta冲刺--凡事预则立 三.10篇冲刺随笔 Beta冲刺--第一天 Beta冲刺--第二天 Beta冲刺--第三天 Be ...
- GoogleTest初探(2)
前面的随笔介绍了Google Test中的基本测试单元TEST和测试夹具TEST_F,此篇介绍区别于这两种测试的参数化测试TEST_P 当待测试方法的行为取决于传入的参数时,而且这些参数的不同组合有多 ...
- Ubuntu GNURadio gr-Radar 的安装
1.安装Ubuntu 进行磁盘管理,设置不少于50G的未分配空间 使用rufus-2.8制作Ubuntu 16.4安装盘 保持U盘插入,重启电脑,开机时进入BIOS设置从该安装盘启动并安装 2.激活w ...
- 添加native service
原文地址:http://blog.csdn.net/zhx6044/article/details/47342227 Native Service 其实就是一个 linux 守护进程,提供一些服务,不 ...
- 标准模板库(STL)的一个 bug
今天敲代码的时候遇到 STL 的一个 bug,与 C++ 的类中的 const 成员变量有关.什么,明明提供了默认的构造函数和复制构造函数,竟然还要类提供赋值运算符重载.怎么会这样? 测试代码 Tes ...
- CentOS 6.5 升级 GCC 4.9.3
1. GUN官网下载源代码安装包: gcc-4.9.3.tar.gz 2. 解压安装包,并进入解压后的文件夹: tar -zxvf gcc-4.9.3.tar.gz 3. 使用压缩包中的工具下载依赖: ...
随机推荐
- 前端框架Vue------>第三天学习(1)
` 文章目录 10 .组件基础 10.1 .什么是组件 11.什么是计算属性 10 .组件基础 10.1 .什么是组件 件是可复用的Vue实例,说白了就是一组可以重复使用的模板 <!DOCTYP ...
- 齐博x1非正常修改后台入口admin.php导致的问题
如果你不是从后台基础设置修改后台入口admin.php文件名的话,也即强行通过FTP修改admin.php文件的名的话,就会导致网站会运行异常 比如会出现不能上传文件之类的.如下图所示
- 8.uvloop
uvloop是asyncio的事件循环的替代方案,性能高于默认asyncio的事件循环的效率,相当于提升两倍,效率可以比肩Go pip3 install uvloop import asyncio ...
- 6.Git忽略文件
忽略指定文件 有些文件与实际功能无关,不参与服务器上部署运行,把他们忽略调能够屏蔽ide工具之间的差异 1.在工作区目录下创建xxx.gitignore文件 (前缀名随意) 以斜杠"/&qu ...
- RabbitMQ安装说明文档(超详细版本)
RabbitMQ安装说明文档(超详细版本) 1. 安装依赖环境 在线安装依赖环境: yum install build-essential openssl openssl-devel unixODBC ...
- 8_vue是如何进行数据代理的
在了解了关于js当中的Object.defineProperty()这个方法后,我们继续对vue当中的数据代理做一个基于现在的解析 建议观看之前先了解下js当中的Obejct.defineProper ...
- python(牛客)试题解析1 - 入门级
导航: 一.NC103 反转字符串 二.NC141 判断是否为回文字符串 三.NC151 最大公约数 四.NC65 斐波那契数列 - - - - - - - - - - 分-割-线 - - - - - ...
- 从ObjectPool到CAS指令
相信最近看过我的文章的朋友对于Microsoft.Extensions.ObjectPool不陌生:复用.池化是在很多高性能场景的优化技巧,它能减少内存占用率.降低GC频率.提升系统TPS和降低请求时 ...
- IO多路复用的理解/演变过程
目录 阻塞IO 非阻塞 IO select epoll 总结一下. 阻塞IO 服务端为了处理客户端的连接和请求的数据,写了如下代码. listenfd = socket(); // 打开一个网络通信端 ...
- 洛谷 P4135 作诗 题解
题面. 之前做过一道很类似的题目 洛谷P4168蒲公英 ,然后看到这题很快就想到了解法,做完这题可以对比一下,真的很像. 题目要求区间内出现次数为正偶数的数字的数量. 数据范围1e5,可以分块. 我们 ...