首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >整型提升,操作符详解

整型提升,操作符详解

作者头像
胖咕噜的稞达鸭
发布2025-10-22 14:43:18
发布2025-10-22 14:43:18
2200
代码可运行
举报
文章被收录于专栏:C++初阶高阶C++初阶高阶
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制
#include<stdio.h>

int main(void)
{
    char a=3;
//    把3的二进制序列存到a里面,因为是char类型,只能存放八个比特位
//    00000000000000000000000000000011;3
//                     00000011        a
    char b=127;
//    00000000000000000000000001111111: 127
//                     01111111         b
    char c=a+b;
//在提升的时候,两个数字都需要高位补0,然后两个高位补0的数字相加为c,二进制计算逢二进一,只保留八个比特位
// 00000000000000000000000000000011
// 00000000000000000000000001111111
// 00000000000000000000000010000010相加之后的c

//  10000010 如果要以整型类型进行打印,char类型不够打印的,所以要发生整型提升,c的前面全部补1(c在提升时候的内存中的补码),下面打印出来要求是%d,需要有符号数,要求其原码,最后打印出其原码

// 11111111111111111111111110000010  -补码
// 11111111111111111111111110000001  -反码
// 10000000000000000000000001111110  -原码
// -126
    printf("%d\n",c);//打印出-126
//                     发现a和b都是char类型的,都没有达到一个int的大小,这里就会发生整型提升
    return 0;
}

代码语言:javascript
代码运行次数:0
运行
复制
#include<stdio.h>

int main(void)
{
    char a=1;
    printf("%u\n",sizeof(a));//打印出为1,char 类型的字节为1
    printf("%u\n",sizeof(+a));//打印出4,正号a说明已经转换成了整型类型
    printf("%u\n",sizeof(-a));//打印出4,同理+a
    printf("%u\n",sizeof(!a));//在vs2022编译器下打印出1,在gcc编译器下打印出4
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档