C语言中的整数类型
C语言的整数类型有哪些?
short、int和long分别是短整型、整形和长整型;
如何输出C语言中的不同的整数类型?
不同整数类型的输出: a.输出短整型使用格式化字符(占位符)%hd; b.输出整型使用格式化字符串(占位符)%d; c.输出长整型使用格式化字符串(占位符)%ld。 注意:
使用sizeof运算符计算C语言中的整数类型的长度
sizeof用法: a.sizeof是一个运算符,用来计算某一数据类型或者变量所占的字节数; b.如果使用sizeof计算某一个变量,后面可以使用括号也可以省略小括号; 如果sizeof计算某一数据类型时,不可以省略括号。 c.如下:short、int和long在Windows 64位环境中长度计算分别为2,4,4.
注意事项
- 如果再输出时没有给格式化字符串传入实参,则系统会分配一个随机值;
- 可以使用ld输出整形或者短整型,也可以使用d输出短整型,但不能使用 hd输出长整型或者整形,或者d也不能输出长整型的数据;否则会出现截断 数值的情况。
C语言中整数类型的长度比较
整形的长度依次是:2<= short <=int <= long;
C语言中的二进制、八进制和十六进制
如何在C语言中表示二进制、八进制和十六进制
1.二进制: a.二进制是由0和1组成的,使用C语言表示时需要再字面量最前面加上“0b”来进行表示; 注意:并不是所有的编译器都支持二进制。 实测结果: Visual C++ 6.0 不支持; VS2010以上支持,但不包含; GCC4.8.2以上支持; MinGW 6.0支持; 2.八进制: 八进制由数字0-7组成,在C语言中表示时需要在字面量的最前面加上“数字0”; 3.十六进制: 十六进制由数字0-9以及字母A-F(a-f),在C语言中表示时需要在字面量常量的 最前面加上0x或0X;
如何在C语言中输出二进制、八进制和十六进制
a.C语言没有为二进制提供输出的格式化字符串(占位符); b.八进制也可以使用short、int和long来扩展数据类型,因此输出时可用的占位符分别是 %ho、%o、%lo同十进制的整型表示一样,第一个代表着哪一种扩展书路类型,第二个表示 进制; c.同八进制一样,十六进制也提供了三种扩展数据类型的输出占位符,分别时%hx、%x、%lx; d.按照上面的不同进制的一般占位符进行输出,会把字面量中的前缀给去掉,直接输出后面的 数值;如果输出时想加上前缀可以使用下面的方法: 在占位符"%"的后面面加上“#”即可;
注意事项
一般占位符都是用小写的形式,是因为一些编译器不支持大写的占位符,如果编译器支持 大写的编写的方式,也可以使用大写的形式,如“lX”; 如果在输出十进制时,尽可能避免添加字符“#”,因为有些编译器不支持。
代码部分
#include <stdio.h>
int main() {
/**
* 整形:
* 1.整形的三种表示方式:short、int和long分别是短整型、整形和长整型;
* 2.整形的长度依次是:2<= short <=int <= long;
* 3.sizeof用法:
* a.sizeof是一个运算符,用来计算某一数据类型或者变量所占的字节数;
* b.如果使用sizeof计算某一个变量,后面可以使用括号也可以省略小括号;
* 如果sizeof计算某一数据类型时,不可以省略括号。
* c.如下:short、int和long在Windows 64位环境中长度计算分别为2,4,4.
* 4.不同整数类型的输出:
* a.输出短整型使用格式化字符(占位符)%hd;
* b.输出整型使用格式化字符串(占位符)%d;
* c.输出长整型使用格式化字符串(占位符)%ld。
* 注意:
* 如果再输出时没有给格式化字符串传入实参,则系统会分配一个随机值;
* 可以使用ld输出整形或者短整型,也可以使用d输出短整型,但不能使用
* hd输出长整型或者整形,或者d也不能输出长整型的数据;否则会出现截断
* 数值的情况。
*/
short a = 100;
int b = 10000;
long c = 1000000;
int short_a = sizeof a;
int int_b = sizeof b;
int long_c = sizeof c;
int short_length = sizeof(short);
int int_length = sizeof(int);
int long_length = sizeof(long);
printf("sizeof_short_a = %d,sizeof_int_b = %d, sizeof_long_c= %d;\n"
"sizeof_short = %d;sizeof_int = %d;sizeof_long = %d."
,short_a,int_b,long_c,short_length,int_length,long_length,"\n");
//输出不同的整数类型
printf("输出短整型:%hd;\n"
"输出整型:%d;\n"
"输出长整型:%ld.\n",
a,
b,
c);
/**
* 二进制、八进制和十六进制的表示:
* 1.二进制:
* a.二进制是由0和1组成的,使用C语言表示时需要再字面量最前面加上“0b”来进行表示;
* 注意:并不是所有的编译器都支持二进制。
* 实测结果:
* Visual C++ 6.0 不支持;
* VS2010以上支持,但不包含;
* GCC4.8.2以上支持;
* MinGW 6.0支持;
* 2.八进制:
* 八进制由数字0-7组成,在C语言中表示时需要在字面量的最前面加上“数字0”;
* 3.十六进制:
* 十六进制由数字0-9以及字母A-F(a-f),在C语言中表示时需要在字面量常量的
* 最前面加上0x或0X;
*
* 4.不同进制的输出:
* a.C语言没有为二进制提供输出的格式化字符串(占位符);
* b.八进制也可以使用short、int和long来扩展数据类型,因此输出时可用的占位符分别是
* %ho、%o、%lo同十进制的整型表示一样,第一个代表着哪一种扩展书路类型,第二个表示
* 进制;
* c.同八进制一样,十六进制也提供了三种扩展数据类型的输出占位符,分别时%hx、%x、%lx;
* d.按照上面的不同进制的一般占位符进行输出,会把字面量中的前缀给去掉,直接输出后面的
* 数值;如果输出时想加上前缀可以使用下面的方法:
* 在占位符"%"的后面面加上“#”即可;
* 注意:
* 一般占位符都是用小写的形式,是因为一些编译器不支持大写的占位符,如果编译器支持
* 大写的编写的方式,也可以使用大写的形式,如“lX”;
* 如果在输出十进制时,尽可能避免添加字符“#”,因为有些编译器不支持。
*/
//二进制
short bianryA = 0b1001;
int bianryB = 0b1010;
long bianryC = 0b1011;
//八进制
short octoaryA = 02007;
int octoaryB = 06007;
long octoaryC = 07007;
// 十六进制
short hexadecimalA = 0x10A;
int hexadecimalB = 0X10b;
long hexadecimalC = 0x10C;
//分别输出不同进制,不同整型的变量
printf("ouput_short_octoary = %ho;output_int_octoary = %o;output_long_octoary=%lo ;\n",octoaryA,octoaryB,octoaryC);
printf("ouput_short_hexdecimal = %hx;output_int_hexdecimal = %x;output_long_hexdecimal=%lx ;\n",hexadecimalA,hexadecimalB,hexadecimalC);
//输出原型
printf("ouput_short_octoary = %#ho;output_int_octoary = %#o;output_long_octoary=%#lo ;\n",octoaryA,octoaryB,octoaryC);
printf("ouput_short_hexdecimal = %#hx;output_int_hexdecimal = %#x;output_long_hexdecimal=%#lx ;\n",hexadecimalA,hexadecimalB,hexadecimalC);
return 0;
}