博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++基础类型之signed、unsigned的一个细节
阅读量:7093 次
发布时间:2019-06-28

本文共 944 字,大约阅读时间需要 3 分钟。

数值型

    c++中,对于 int、long、int64、...等这些数值类型,如果是有符合的,则类型前加不加 signed 其效果都是一样的。

比如如下声明:

int nA;     // 与 signed int nA; 声明一样long nB;   // 与signed long nB; 声明一样int64 nC; // 与signed int64 nC; 声明一样

字符

    对于char需要小心。许多人知道 char 与 unsigned char 是不同的,但不一定会知道 char 与 signed char 其实不一定是相同的。为什么?因为编译器对于 char 其识别为是 char 类型,对于 signed char 是识别为 signed char 类型,而不是 char 类型。

    或许也正是该点原因,所以char变量在不同的编译器下值可能会不同的根本原因所在(记得在制作xx游戏时,就有遇到过这个坑,N个人查了好久才查出来)。至于编译器为什么如此设计,个人猜测可能是由于历史原因,导致后来的c++标准没办法统一该点标准。

    下面请看下面测试代码及测试结果:

1     cout << (typeid(char) == typeid(signed char)) << endl; 2  3     auto vvvv = typeid(char).name(); 4     cout << vvvv << endl; 5     vvvv = typeid(signed char).name(); 6     cout << vvvv << endl; 7     vvvv = typeid(unsigned char).name(); 8     cout << vvvv << endl; 9 10     vvvv = typeid(int).name();11     cout << vvvv << endl;12     vvvv = typeid(signed int).name();13     cout << vvvv << endl;

输出结果:

 

转载于:https://www.cnblogs.com/tongy0/p/6379468.html

你可能感兴趣的文章
如何优雅的编写 JavaScript 代码
查看>>
MySQL 聚合函数
查看>>
Ubuntu16.10安装Ocata之2:Keystone
查看>>
IGMPv3
查看>>
ZeroMQ(java)之Router/Dealer模式
查看>>
Linux下的文件查找命令
查看>>
数据分析软件SPSS22的授权及汉化
查看>>
TCP/IP协议碎碎念
查看>>
django 将表数据通过API展示到页面上
查看>>
linux用户登录检测发送邮件提醒
查看>>
Gfk报告:中国智能手机统治东南亚市场
查看>>
Exception in thread "main" java.lang.Error: Unresolved compilation problem
查看>>
个人见解 web性能优化
查看>>
中断优先级和中断线程优先级
查看>>
TFS 安装使用GCC4.4版本
查看>>
svn与web 同步更新
查看>>
通用社区登陆组件技术分享(开源)下篇:OAuth 源码下载及原理解说
查看>>
Windows Phone 7 程序等待页面的处理
查看>>
DNS 2003 External resoluation Monitor
查看>>
win7桌面坐标突然变了
查看>>