鉴于这个C 11计划,我应该期待看到一个数字还是一个字母?还是没有期望?

#include

#include

int main()

{

int8_t i = 65;

std::cout << i;

}

标准是否指定此类型是否可以是字符类型?

解决方法:

根据C 0x FDIS(N3290)的§18.4.1[cstdint.syn],int8_t是一个可选的typedef,其指定如下:

namespace std {

typedef signed integer type int8_t; // optional

//...

} // namespace std

§3.9.1[basic.fundamental]陈述:

There are five standard signed integer types: “signed char”, “short int”, “int”, “long int”, and “long long int”. In this list, each type provides at least as much storage as those preceding it in the list. There may also be implementation-defined extended signed integer types. The standard and extended signed integer types are collectively called signed integer types.

Types bool, char, char16_t, char32_t, wchar_t, and the signed and unsigned integer types are collectively called integral types. A synonym for integral type is integer type.

§3.9.1还规定:

In any particular implementation, a plain char object can take on either the same values as a signed char or an unsigned char; which one is implementation-defined.

很有可能得出结论,int8_t可能是char的typedef,前提是char对象采用有符号值;但是,情况并非如此,因为char不在有符号整数类型列表中(标准和可能扩展的有符号整数类型).另请参见std :: make_unsigned和std :: make_signed上的Stephan T. Lavavej’s comments.

因此,int8_t是signed char的typedef,或者是扩展的有符号整数类型,其对象恰好占用8位存储.

但是,要回答你的问题,你不应该做出假设.因为已经定义了x.operator<

>模板< class traits> basic_ostream&LT炭,性状&GT&安培;如果int8_t是签名字符的完全匹配(即signed char的typedef),则将调用operator&,signed char)模板.

>否则,int8_t将被提升为int和basic_ostream< charT,traits>&将调用operator

在std :: cout<

>模板< class traits> basic_ostream&LT炭,性状&GT&安培;如果uint8_t是unsigned char的完全匹配,则将调用operator&,unsigned char)模板.

>否则,因为int可以表示所有uint8_t值,uint8_t将被提升为int和basic_ostream< charT,traits>&将调用operator

如果您总是想要打印一个角色,最安全,最明确的选择是:

std::cout << static_cast(i);

如果你总想打印一个数字:

std::cout << static_cast(i);

标签:c,c11,language-lawyer,iostream,standard-library

来源: https://codeday.me/bug/20190923/1813451.html

C语言uint8_t和char的区别,c – int8_t和uint8_t是char类型吗?相关推荐

  1. java char的包装对象,Java 从Character和char的区别来学习自动拆箱装箱

    本文结构 1.Character和char 的区别: 2.自动拆箱装箱java 1.Character和char 的区别: Character是类,char基本数据类型.数组 在java中有三个类负责 ...

  2. char *a 与char a[] 的区别和char** argv与char *argv[]区别

    char *a 与char a[] 的区别 char *a = "hello" 中的a是指向第一个字符'a'的一个指针 char a[20] = "hello" ...

  3. c语言char有什么作用,C语言中char*和char[]用法区别分析

    本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很大.以下是个人的一些看法,有不正确的地方望指正 ...

  4. c语言char数组和short数组的区别,详解C语言中Char型指针数组与字符数组的区别

    详解C语言中Char型指针数组与字符数组的区别 详解C语言中Char型指针数组与字符数组的区别 1.char 类型的指针数组:每个元素都指向一个字符串,指向可以改变 char *name[3] = { ...

  5. C语言 char 和 signed char的区别

    在STM32项目的开发过程遇到一个奇葩的问题,测试代码如下: char _char =-1;if(_char!=-1){pr_dbg("_char!=-1\r\n");}else{ ...

  6. C语言中字符数组char[] 和 字符串char*的区别

    在程序结构设计中使用结构体定义新的数据类型,如 typedef struct { int type; int value; char arg[]; } CommandInfo; 在strcpy时将一个 ...

  7. 基于C语言char与unsigned char的区别介绍

    在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别. 首先在内存中,char与unsigned char没有什么不 ...

  8. c语言char aa 1000,char ** 与char * a[ ] 区别

    先看 char  *a [ ] ; 由于[ ] 的优先级高于* 所以a先和 [ ]结合,他还是一个数组,数组中的元素才是char * ,前面讲到char * 是一个变量,保存的地址.. 所以 char ...

  9. C语言中的int8_t,uint8_t, int16_t,uint16_t, int32_t,uint32_t, int64_t,uint64_t和int数组,char数组以及sizeof()的理解

    C语言中的数据类型理解 前言 一.嵌入式开发过程中常遇到的数据类型 二.关于printf的使用 前言 根据开发需要决,用 char 时,数组每个元素的 字长与存储单元 是1个byte(16进制2位,2 ...

最新文章

  1. delphi的ArrayList
  2. 对于存放数据库时带有html标签问题
  3. poj 3537 Crosses and Crosses 博弈论之grundy值
  4. python如何安装panda数据库_在Pycharm中安装Pandas库方法(简单易懂)
  5. Docker 精通之入门
  6. 从输入url开始,完善前端体系架构
  7. 计算时间差_小王子是怎么用四步法进行时间计算并成功避开日界线的
  8. 实现第一个JDBC程序(详细)
  9. android 布局属性
  10. db2中TRANSLATE函数可以实现简单的正则(不属于真正的正则表达式)
  11. 深度学习与PyTorch入门实战教程
  12. pr字幕一个一个出现的笨方法
  13. 正运动技术CAD导图软件配合控制器的使用方法
  14. SSRF深度解析Gopher协议
  15. 【用python写一个简易的消息轰炸代码】
  16. 利用JavaScript在canvas中画一棵树
  17. 英语口语学习推荐的21部电影
  18. 学习日记——8 20
  19. 【Python实战】推文助手好用吗?真的能赚钱吗?教您一招,有了这款微信自动发送消息小助手,文字自动跳出来~赚麻了(赶紧收藏)
  20. 域名授权验证系统v1.0.6开源版本网站源码

热门文章

  1. 简单易懂读《重构》 - Speculative Generality (高估未来的可能性)
  2. 【转】iOS右滑返回手势全解和最佳实施方案
  3. 记录:如何解决Ubuntu20.04无法联网问题【亲测有效】
  4. Ubuntu18.04启动盘制作
  5. ISO7816协议中psam卡片的延时单元etu
  6. 京东实习笔试——站队
  7. 水上运动装备的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  8. IBM PureApplication System中的硬件之旅:第二代
  9. 在 win7 上简单搭建ftp服务器
  10. 怎么看python是64位还是32位_怎样查看python是64位还是32位