C语言基础教程 之 整型:short,int,long


C语言基础教程目录:https://blog.csdn.net/SparkLee2013/article/details/85229406


1、有符号和无符号整型数据

C语言中定义的整型变量,默认都是有符号的,故关键字signed是可以省略不写的;但若是想要定义一个无符号的变量,则必须加unsigned关键

#include <stdio.h>

void main() {
    // 定义有符号整型变量
    int a = -10;
    signed int a1 = 25; // signed可省略不写
    printf("a = %d\n", a);
    printf("a1 = %d\n", a1);

    // 定义无符号整型变量
    unsigned int b = 15;
    printf("b = %u\n", b);
}

# 输出结果:
a = -10
a1 = 25
b = 15

有符号和无符号变量的区别:

  1. 有符号数的最高位是符号位,0代表是正数,1代表是负数
  2. 无符号数的最高位不是符号位,而是数的一部分,无符号数都是正数,不可能是负数

2、prinf()整型变量输出占位符

int整型变量输出占位符:

  1. %d:输出一个有符号的10进制int变量
  2. %u:输出一个无符号的10进制int变量
  3. %o:输出8进制的int变量
  4. %x:输出16进制的int变量,字母以小写输出
  5. %X:输出16进制的int变量,字母以大写输出
  6. %%:输出一个'%'字符
#include <stdio.h>

void main() {
    int a = 10;
    printf("Decimal a = %d\n", a);            // 以十进制形式输出
    printf("Octal a = %o\n", a);              // 以八进制形式输出
    printf("Hexadecimal(lower) a = %x\n", a); // 以十六进制(小写)形式输出
    printf("Hexadecimal(upper) a = %X\n", a); // 以十六进制(大写)形式输出

    unsigned b = 13;
    printf("unsigned Decimal b = %u\n", b); // 输出一个无符号的10进制int变量
}

# 输出结果:
Decimal a = 10
Octal a = 12
Hexadecimal(lower) a = a
Hexadecimal(upper) a = A
unsigned Decimal b = 13

其他整型变量输出占位符:

  1. %hd:输出一个有符号的 short 变量
  2. %d:  输出一个有符号的 int变量
  3. %ld: 输出一个有符号的 long 变量
  4. %lld:输出一个有符号的 long long 变量
  5. %hu:输出一个无符号的 short 变量
  6. %u:  输出一个无符号的 int 变量
  7. %lu: 输出一个无符号的 long 变量
  8. %llu:输出一个无符号的 long long 变量
#include <stdio.h>

void main() {
    short a = 20;
    int b = 10;
    long c = 30;
    long long d = 40;

    printf("short a = %hd\n", a);      // 输出一个有符号短整型数据
    printf("int b = %d\n", b);         // 输出一个有符号整型
    printf("long c = %ld\n", c);       // 输出一个有符号长整型数据
    printf("long long d = %lld\n", d); // 输出一个有符号长长整型数据
    printf("\n");

    unsigned short a2 = 20;
    unsigned int b2 = 10;
    unsigned long c2 = 30;
    unsigned long long d2 = 40;

    printf("unsigned short a2 = %hu\n", a2);      // 输出一个无符号短整型数据
    printf("unsigned int b2 = %u\n", b2);         // 输出一个无符号整型
    printf("unsigned long c2 = %lu\n", c2);       // 输出一个无符号长整型数据
    printf("unsigned long long d2 = %llu\n", d2); // 输出一个无符号长长整型数据
}

# 输出结果:
short a = 20
int b = 10
long c = 30
long long d = 40

unsigned short a2 = 20
unsigned int b2 = 10
unsigned long c2 = 30
unsigned long long d2 = 40

3、定义其他进制整型数据

  1. 定义一个八进制整型数据:以0开头
  2. 定义一个十六进制整型数据:以0x开头
#include <stdio.h>

void main() {
    // 定义一个八进制整型数据
    int a = 012;
    printf("Decimal a = %d\n", a);            // 以十进制形式输出
    printf("Octal a = %o\n", a);              // 以八进制形式输出
    printf("Hexadecimal(lower) a = %x\n", a); // 以十六进制(小写)形式输出
    printf("Hexadecimal(upper) a = %X\n", a); // 以十六进制(大写)形式输出

    // 定义一个十六进制整型数据
    int b = 0xa;
    printf("\n");
    printf("Decimal b = %d\n", b);            // 以十进制形式输出
    printf("Octal b = %o\n", b);              // 以八进制形式输出
    printf("Hexadecimal(lower) b = %x\n", b); // 以十六进制(小写)形式输出
    printf("Hexadecimal(upper) b = %X\n", b); // 以十六进制(大写)形式输出
}

# 输出结果:
Decimal a = 10
Octal a = 12
Hexadecimal(lower) a = a
Hexadecimal(upper) a = A

Decimal b = 10
Octal b = 12
Hexadecimal(lower) b = a
Hexadecimal(upper) b = A

4、整型取值范围

int取值范围:

#include <stdio.h>

void main() {
    printf("sizeof(int) = %u\n", sizeof(int));
    printf("\n");
    
    // 有符号int变量取值范围:[-2147483648, 2147483647]
    int a = 2147483647;

    // 无符号int变量取值范围:[0, 4294967295]
    unsigned int b = 4294967295;

    printf("a = %d\n", a);
    printf("ax = %X\n", a);
    printf("a2 = %d\n", a + 1);

    printf("\n");

    printf("b = %u\n", b);
    printf("bx = %X\n", b);
    printf("b2 = %u\n", b + 1);
}


# 输出结果:
sizeof(int) = 4

a = 2147483647
ax = 7FFFFFFF
a2 = -2147483648

b = 4294967295
bx = FFFFFFFF
b2 = 0

5、通过键盘输入赋值

#include <stdio.h>

void main() {
    // 定义一个整型变量
    int a;

    // 通过键盘输入对变量a进行赋值,使用占位符"%d",'&'是取地址操作
    scanf("%d", &a);

    // 打印变量a的值
    printf("a = %d\n", a);
}

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值