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

三字母词(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 0Xb6000000
int  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);
}

//output
a is false
b is false 
c is true
4

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值