【虾仁猪心!!】--1

一.虾仁猪心

          发现一道题目,小小的题目蕴藏了我太多不知道的点。(还是因为我太菜了)

#include <stdio.h>
int i;
int main()
{
    i--;
    if (i > sizeof(i))
    {
        printf(">\n");
    }
    else
    {
        printf("<\n");
    }
    return 0; 
}

二.强调的重点

     1.全局变量,没有给初始值时,编译其会默认将其初始化为0。因此本题中的i刚开始赋值因为0.

     2.siziof()。sizeof()在优快云上的说明是,这个关键字的结果给出的是一个变量或者一个类型在内存中所占空间的大小,单位是字节。该返回值的类型是size_t。具体来说,当这个关键字应用于一个结构变量或者类型的时候,sizeof返回的是变量或者类型实际的大小。当sizeof()应用于一个多维数组时,它返回的是整个数组的大小。但是sizeof()无法返回动态数组和外部变量。且sizeof的返回值类型实际为无符号整形。故此题中sizeof(i)求i类型大小是4。

    3. 在i和sizeof()进行比较的时候,编译器会自动将左侧i自动转换为无符号整形的数据。经过i--后,i的值是-1。所以将-1转换为无符号整型时i的值很大。

int main()
{
	int i = (unsigned int) -1;
	printf("%lld", i);  //-1在内存中的补码为全1,将这个值解释为无符号整型,
	//则为无符号整型所能表示的最大值,32位下为4294967295。
  //无符号输出是把补码直接转化为10进制输出
    return 0;
}

4.所以以上最终输出结果为>

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值