简单易懂,C语言中%d与%i的区别

前言

在搜集资料的时候,意外发现了与%d功能十分相同的格式输出字符%i。关于%d是我们日常编程中经常使用的用于输出有符号十整数的格式输出符,那至于%i,我相信有很多初学者是第一次见。

相同点

先说一下百分号地和百分号的相同点吧在printf()函数中,这两个的功能是完全相同的,都是输出有符号十进制整数
printf()普通使用

#include<stdio.h>
int main()
{
	int a = 1145145, b = 1145145;
	printf("%d\n", a);
		printf("%i\n", b);
	return 0;
}

输入1145145,结果一致
在这里插入图片描述
printf()溢值情况

#include<stdio.h>
int main()
{
	int a = 2147483648, b = 2147483648;
	printf("%d\n", a);
	printf("%i\n", b);
	return 0;
}

输入2147483648,结果溢出为-2147483648
在这里插入图片描述

异同点

它们的区别主要在是scanf()函数上
当你使用%d时候,如果你实际输入的是8进制16进制的数,%d会忽略前面的八进制或者十六进制符号直接输入后面的数字
但是如果你使用%i,%i会读取前面的8进制和16进制符号,如果它读取到这些符号之后的实际输入也会转换成8进制和16进制,然后再转换为十进制
例子

scanf()正常使用

#include<stdio.h>
int main()
{
	int a = 0, b = 0;i
	scanf(" %d,%i", &a,&b);
	printf("%d\n", a);
	printf("%i\n", b);
	return 0;
}

输入和输出都是1145145
在这里插入图片描述


scanf()八进制或十六进制

#include<stdio.h>
int main()
{
	int a = 0, b = 0;
	scanf(" %d,%i", &a,&b);
	printf("a:%d\n", a);
	printf("b:%i\n", b);
	return 0;
}

输入012,%d输出12,%i输出10
在这里插入图片描述
可以看到a的结果为12,%d忽略了前面的八进制符号,b的结果为10,八进制12的十进制值就为10

后言

如果你简单有帮助,请点个赞,有什么想法请评论一下,必定回复

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿福爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值