C语言数据类型
2018-06-18 04:16:10来源:未知 阅读 ()
C数据类型 |
基本类型 |
数值类型 |
整型 |
短整型short |
整型int |
||||
长整形long |
||||
浮点型 |
单精度型float |
|||
双精度型double |
||||
字符类型char |
|
|
||
构造类型 |
数组 |
|
|
|
结构体struct |
|
|
||
共用体union |
|
|
||
枚举类型enum |
|
|
||
指针类型 |
|
|
|
|
空类型void |
|
|
|
符号属性 |
长度属性 |
基本型 |
位长(字节) |
取值范围 |
输入符 |
输出符 |
-- |
-- |
char |
1 |
-2^7~2^7-1(或0..255,与体系结构有关) |
%c |
%c、%d、%u |
signed |
-- |
char |
1 |
-2^7~2^7-1 |
%c |
%c、%d、%u |
unsigned |
-- |
char |
1 |
0~2^8-1 |
%c |
%c、%d、%u |
-- |
short |
[int] |
2 |
-2^15~2^15-1 |
%hd %hi |
|
signed |
short |
[int] |
2 |
-2^15~2^15-1 |
%hd %hi |
|
unsigned |
short |
[int] |
2 |
0~2^16-1 |
%hu %ho %hx |
|
-- |
-- |
int |
2/4 |
-2^31~2^31-1 |
%d %i |
|
signed |
-- |
int |
2/4 |
-2^31~2^31-1 |
%d %i |
|
unsigned |
-- |
int |
2/4 |
0~2^32-1 |
%u %o %x |
|
-- |
long |
[int] |
4/8 |
-2^31~2^31-1 |
%ld %li |
|
signed |
long |
[int] |
4/8 |
-2^31~2^31-1 |
%ld %li |
|
unsigned |
long |
[int] |
4/8 |
0~2^32-1 |
%lu %lo %lx |
|
-- |
long long |
[int] |
8 |
-2^63~2^63-1 |
%I64d %lld %Ili |
|
signed |
long long |
[int] |
8 |
-2^63~2^63-1 |
%I64d %lld %Ili |
|
unsigned |
long long |
[int] |
8 |
0~2^64-1 |
%I64u %I64o %I64x |
|
-- |
-- |
float |
4 |
+/-3.40282e+038 |
%f %e %g |
|
-- |
-- |
double |
8 |
+/-1.79769e+308 |
%lf %le %lg |
%f、%e、%g |
-- |
long |
double |
8或以上 |
+/-1.79769e+308 |
%Lf %Le %Lg |
|
注意:
1、 表中的每一行,代表一种基本类型。“[]”代表可省略。
2、 char、signed char、unsigned char是三种互不相同的类型;int、short、long也是三种互不相同的类型。
3、 将char/signed char转换为int时,会对最高符号位1进行扩展,从而造成运算问题。所以,如果要处理的数据中存在字节值大于127的情况,使用unsigned char较为妥当。程序中若涉及位运算,也应该使用unsigned型变量。
4、 int的长度,是16位还是32位,与编译器字长有关。
5、 整型数据可以使用%d(有符号10进制)、%o(无符号8进制)或%x/%X(无符号16进制)方式输入输出。而格式符%u,表示unsigned,即无符号10进制方式。
6、 整型前缀h表示short,l表示long。输入输出short/unsigned short时,不建议直接使用int的格式符%d/%u等,要加前缀h。(使用相匹配的格式对数据类型进行输入输出)
7、 关于long long类型的输入输出:"%lld"和"%llu"是linux下gcc/g++用于long long int类型(64 bits)输入输出的格式符。而"%I64d"和"%I64u"则是Microsoft VC++库里用于输入输出__int64类型的格式说明。
8、 浮点型数据输入时可使用%f、%e/%E或%g/%G,scanf函数会根据输入数据形式,自动处理。输出时可使用%f(普通方式)、%e/%E(指数方式)或%g/%G(自动选择)。
9、 浮点参数压栈的规则:float(4字节)类型扩展成double(8字节)入栈。在输入时,需要区分float(%f)与double(%lf);在输出时,用%f即可。printf函数将按照double型的规则对压入堆栈的float(已扩展成double)和double型数据进行输出。如果在输出时指定%lf格式符,gcc/mingw32编译器将给出一个警告。
10、 前缀L表示long(double)。虽然long double比double长4个字节,但是表示的数值范围却是一样的。long double类型的长度、精度及表示范围与所使用的编译器、操作系统等有关。
64位整数全解
64位整形引起的混乱主要在两方面:一是数据类型的声明,二是输入输出。
首先是如果我们在自己机器上写程序的话,情况分类如下:
(1) 在win下的VC6.0里面,声明数据类型的时候应该写作
__int64 a;
输入输出的时候用%I64d
scanf(”%I64d”,&a);
printf(”%I64d”,a);
(2) 在linux下的gcc/g++里面,数据类型声明写作
long long a;
输入输出时候用%lld
(3) 在win下的其它IDE里面[包括高版本Visual Studio],数据类型声明用上面两种均可。
输入输出用 %I64d
数据类型转换
数据类型转换就是将数据(变量、表达式的结果)从一种类型转换到另一种类型。
强制类型转换:由程序员显式进行的转换。
自动类型转换:编译器根据混合运算中不同数据类型隐式地进行数据类型转换。
类型自动转换的规则:
注:
1、 char型和short型参与运算时,必须先转换成int型。
2、 在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型将转换为左边变量的类型。如果右边表达式的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- SWIG 3 中文手册——11. 类型映射 2020-06-07
- 关于各种不同开发语言之间数据加密方法(DES,RSA等)的互通的 2020-06-07
- Visual Studio 2019提示不能将const char*类型的值分配到con 2020-06-07
- C++ 共用体 2020-06-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash