数值型

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++标准没办法统一该点标准。

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

     cout << (typeid(char) == typeid(signed char)) << endl;

     auto vvvv = typeid(char).name();
cout << vvvv << endl;
vvvv = typeid(signed char).name();
cout << vvvv << endl;
vvvv = typeid(unsigned char).name();
cout << vvvv << endl; vvvv = typeid(int).name();
cout << vvvv << endl;
vvvv = typeid(signed int).name();
cout << vvvv << endl;

输出结果:

c++基础类型之signed、unsigned的一个细节的更多相关文章

  1. mysql基础类型知识总结

    Mysql知识回顾 http://www.educity.cn/wenda/596225.html http://blog.csdn.net/dyllove98/article/details/928 ...

  2. Chapter2(变量和基础类型)--C++Prime笔记

    数据类型选择的准则: ①当明确知晓数值不可能为负时,选用无符号类型. ②使用int执行整数运算.在实际应用中,short常常显得太小而long一般和int有一样的尺寸.如果运算范围超过int的表示范围 ...

  3. C++ Any 任意基础类型封装

    下面是本人使用C++封装的一个针对任意基础类型以及用户自定义类型指针的通用类型.目的是为方便常用类型使用统一化及便利化.该类型的使用就与平时使用基础类型基本没什么差别.具体可参看以下代码及测试代码. ...

  4. Typescript基础类型

    1.布尔值__boolean 2.数字__number----除了支持十进制和十六进制字面量,Typescript还支持ECMAScript 2015中引入的二进制和八进制字面量. 3.字符串__st ...

  5. 玩转JavaScript OOP[0]——基础类型

    前言 long long ago,大家普遍地认为JavaScript就是做一些网页特效的.处理一些事件的.我身边有一些老顽固的.NET程序员仍然停留在这种认知上,他们觉得没有后端开发肯定是构建不了系统 ...

  6. 【Go入门教程2】内置基础类型(Boolean、数值、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值

    这小节我们将要介绍如何定义变量.常量.Go内置类型以及Go程序设计中的一些技巧. 定义变量 Go语言里面定义变量有多种方式. 使用var关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量类型 ...

  7. Java基础类型总结

    最近一直在总结反思自己, 趁着现在请假在学校上课的空余时间,从基础开始重新温故学习下Java,充实下自己. 一.数据类型 从下图中,我们可以很清晰的看出Java中的类型,其中红色方框中的是Java的4 ...

  8. c#基础-类型基础深入了解

    对象类型需要动态内存,基础类型需要静态内存 动态内存分配在堆上,静态内存分配在栈上. 静态内存保存着简单的变量,如 int a=0; 值类型:把一个值类型赋值给另外一个值类型,改变其中一个另外一个不会 ...

  9. Java基础类型与其二进制表示

    Java中的基础类型有:byte.short.int.long.float.double.char和boolean. 它们可被分为四种类型,整型.浮点型.char型和boolean型. 整型:byte ...

随机推荐

  1. 在linux环境下让java代码生效的步骤

    1.kill jboss 2.compile 3.deploy 4.bootstrap jboss.

  2. mmall项目之问题一(mavenplugin问题)

    在进行mybatis逆向工程到时候,报错,提示maven plugin 错误,提示missing..... 解决办法: 因为之前到pom中忘记了加版本信息,添加后错误消失:

  3. photo@PKU

  4. expect 实现本地到远程的scp

    expect文件demo 令文件名为test.exp #!/usr/bin/expect -f set timeout -1 set pwd " set src_file [lindex $ ...

  5. 大数问题,通常用JAVA

    e.g. HDU1002 简单加法 import java.math.BigInteger; import java.util.Scanner; public class Main { public ...

  6. 图论:Dinic算法

    解决最大流问题我搜到了一堆的算法:EK算法.FF算法.Dinic算法.SAP算法.ISAP算法 然而并没有什么鸟用 掌握最常见的Dinic就够了,据说极限优化的ISAP比Dinic更快一些..我当不知 ...

  7. bzoj2683/4066 简单题

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2683 http://www.lydsy.com/JudgeOnline/problem.ph ...

  8. Xcode5根控制器使用xib展示的步骤

    #error:Xcode5根控制器使用xib展示,步骤 ⓵取消mainInterface ⓶右击file's owner对xib进行view-view连线,否则: Terminating app du ...

  9. python3 json、logging、sys模块

    json模块 import json dic = {'name':'egon','age':32} # ------------------------------>序列化 f = open(' ...

  10. python学习笔记 序列化

    在程序运行的过程中,所有的变量都是在内存中,比如,定义一个dict: d = dict(name='Bob', age=20, score=88) 可以随时修改变量,比如把name改成'Bill',但 ...