相关疑难解决方法(0)

隐式类型促销规则

本文旨在用作关于C中隐式整数提升的常见问题解答,特别是由通常的算术转换和/或整数提升引起的隐式提升.

示例1)
为什么这会给出一个奇怪的大整数而不是255?

unsigned char x = 0;
unsigned char y = 1;
printf("%u\n", x - y); 
Run Code Online (Sandbox Code Playgroud)

例2)
为什么这会给"-1大于0"?

unsigned int a = 1;
signed int b = -2;
if(a + b > 0)
  puts("-1 is larger than 0");
Run Code Online (Sandbox Code Playgroud)

示例3)
为什么更改上例中的类型来short解决问题?

unsigned short a = 1;
signed short b = -2;
if(a + b > 0)
  puts("-1 is larger than 0"); // will not print
Run Code Online (Sandbox Code Playgroud)

(这些示例适用于16位或短16位的32位或64位计算机.)

c type-conversion implicit-conversion

50
推荐指数
2
解决办法
7417
查看次数

什么是"扩展整数类型"?

引用我正在阅读的书:

  1. signed char, signed short int, signed int, signed long int, signed long long int被称为标准有符号整数类型
  2. unsigned char, unsinged short int, unsigned int, unsigned long int, unsinged long long int, _Bool被称为标准无符号整数类型
  3. 除了标准整数类型之外,C99标准还允许实现定义的扩展整数类型,包括有符号和无符号.例如,编译器可能提供有符号和无符号的128位整数类型.

我有第3点的问题.这些"扩展整数类型"是什么?任何例子?

c gcc c99

15
推荐指数
2
解决办法
3957
查看次数

标签 统计

c ×2

c99 ×1

gcc ×1

implicit-conversion ×1

type-conversion ×1