c语言三字母词(trigraph) && 整型提升

来源:互联网 发布:网络建设与管理试题 编辑:程序博客网 时间:2024/06/14 10:48

三字母词(trigraph) && 整型提升

最近看了c的语言标准,因为很喜欢,但是无奈自己英文是个菜鸟.但是所幸看见了一个致力于c11的网站,上面讲到了三字母词,还要整型提升

三字母词

编译阶段将特定的几个三字母词替换为 一个词这里是表格
表格

这应该属于历史原因,某些键盘或者设备没有对应字符的那些按键

比如

??=define P 3.14//等价于#define P 3.14

整形提升

c语言的整形 int以下的整形在进行运算是会提升为int的4字节,相关资料显示为cpu里的ALU单元,在32为以上(不严谨)不容易做8位运算,相关资料,需要提升为整形,但是我代码测试也发现了这个问题,上代码

//环境gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)centos7  x64//代码#include<stdio.h>#define CHARB 0Xb6#define SHORTB 0xb600#define INTB 0Xb6000000int  main(void){  char a = CHARB;  short b = SHORTB;  int c = INTB;  if(a == CHARB){    printf("a is true\n");  }else{    printf("a is false\n");  }  if(b == SHORTB){    printf("b is true \n ");  }else{    printf("b is false \n");  }  if(c == INTB){    printf("c is true\n");  }else{    printf("c is false \n");  }  printf("%d\n" , sizeof(+a));   exit(0);}//outputa is falseb is false c is true4

这里有一个问题c是以编译器实现为准的,不要看见标准就以为一定会有,使用之前也要自己先进行测试.跨平台更要小心.

原创粉丝点击