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

前言

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

相同点

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

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

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

#include
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
int main()
{
	int a = 0, b = 0;i
	scanf(" %d,%i", &a,&b);
	printf("%d\n", a);
	printf("%i\n", b);
	return 0;
}

输入和输出都是1145145
简单易懂,C语言中%d与%i的区别_第1张图片


scanf()八进制或十六进制

#include
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

后言

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

你可能感兴趣的:(c语言,开发语言)