本帖最后由 XIANSir 于 2011-3-1 20:38 编辑
75# 刘前辈
“逻辑运算需要操作数整提升?你从哪看来的?自己别创新!还那么肯定地,最好先看看《C语言详解》有关内容,百度上搜索一下也行。”
那我请问前辈:如果一个32位的CPU,但是指令集中只有“字加”指令ADD,没有(不支持)字节相加指令——虽然我见识浅薄,不知道这样的CPU,但是这样的CPU肯定存在(比如,对于有符号字节变量的加法,不可能直接放到32位的寄存器中进行相加的,除非有特殊的硬件结构能够检测到加法过程中的的字节进位、双字节进位——就如51单片机中的psw寄存器中的cy位的作用一样)
那么:
byte a = 1,
b = 1,c;
c = a+b;
你认为编译器会怎么处理啊??
我认为编译器会先把a和b都提升为4字节的字类型,然后进行相加,最后把结果的最低字节赋值给c
您认为a运算之前先扩展成字类型,这种现象叫做类型提升 吗??? |