重点
- 全局变量、静态变量都放在静态区
- 全局变量、静态变量不初始化的时候,默认会被初始化为0
- 局部变量,不初始化,默认值是随机值
题目
知识1:
sizeof 这个操作符计算返回的结果是size_t类型的,是无符号整型
知识2:
算数转换:如果某个操作数属于不同类型,那么其中一个操作数转换为另一个操作数的类型
long double
double
float
unsigned long int
long int
unsigned int
int
算术转换是向上转换的,如 int 类型和 unsigned int 类型一起,int 转换成 unsigned int
Q:输出的是 > 还是 < ?
#include <stdio.h>
int i;
int main()
{
i--;
if (i > sizeof(i))
{
printf(">\n");
}
else
{
printf("<\n");
}
return 0;
}
思路:
int i;
首先,i 是全局变量,没有给出初始化的数值,默认初始化为0
i--;
i = -1
if (i > sizeof(i))
sizeof (i) 返回 4
因为sizeof操作符的返回值类型是size_t类型, 是无符号整型的
所以 int 类型的 i 也被转换成了 unsigned int 类型
-1转换成无符号整型,被理解为了一个非常大的正数
答:>