数据类型

基本数据类型

基本类型
1.整型 : int 占4个字节 占4*8=32位 有效范围-2^31~(2 ^31)-1
2.实型(浮点型):单精度(1)float 占4 占32位 范围-2^31~(2 ^31)-1
双精度 (2)double 占8 占64位 范围-2^63~(2 ^63)-1
3.字符型:char 占1 占8位 范围-2^7~(2 ^7)-1
4.枚举类型
构造类型
1.数组类型
2.结构体类型
3.共用体类型
指针类型

空类型

常量

整型常量
C语言中整型常量可用十进制、八进制与十六进制3种形式表示。
1)十进制整数。即0~9,不能以0开始,没有前缀。
2)八进制整数。以0为前缀,由0~7组成,无小数部分。
3)十六进制整数。以0X或0x开头,由0~9和a ~f(或A ~F)组成。
各个进制之间的相互转换
二进制–>十进制:例二进制的0110转换为十进制。从二进制最后一个数开始,依次向前以每个数乘以2的0次方开始递加,最后相加。即0110转化为十进制为 0 * 2 ^0+1 * 2 ^1+1 * 2 ^2+0 * 2 ^3=6
八进制–>十进制:方法类似于二进制转换为十进制,需忽略前缀0。例0456的八进制转换为十进制为 6 * 8 ^0+5 * 8 ^1+4 * 8 ^2=302
十六进制–>十进制:与前两相仿,只需忽略前缀即可。例0x7A的转换为 A * 16 ^0+7 * 16 ^1=122

另,长整型常量加后缀L或l,无符号常量加后缀U或u。
实型常量
C语言中,实数又叫浮点数,一般有两种形式。
1)十进制小数形式。由数字和小数点组成。必须有小数!!!如1.2 、.24、2.、0.0等
2)指数形式。由十进制数、阶码标志“E”或“e”和阶码组成,阶码只能是整数。如123.4e3和123.4E3均表示123.4 * 10 ^3。e和E 前面必须有数字,后面必须是整数!!!

C编译系统对实型常量不分float和double,都作为double来处理。若要特指float,则在实型常量后面加上字母f或F。
符号常量
即用标识符来代替一串数字
例:

#define PI 3.14
void main()
{
 int r=2;
 float s,l;
 l=2*PI*r;
 s=PI*r*r;
 ptintf("l=%f,s=%f\n",l,s);
}

此处PI代表数字3.14。

使用符号常量时,虽然它是用标识符来标识的,但它的本质是常量。
字符型常量

字符常量

C语言中的字符常量是用单引号括起来的一个字符。例‘a’、‘A’、‘x’、‘3’和‘#’等。

  • 常用转义字符及其含义

    注:反斜线后的八进制不可以用0开头;反斜线后的十六进制只能以小写字母x开头。

a的ASCII码值为097,A的ASCII码值为065。即大小写字母ASCII码值相差32。
空格的ASCII码值为032

字符串常量

字符串常量是用双引号括起来的字符串序列,例“a”、“china”、“I am a student.”、“123.0”等。

C语言中字符串常量的储存方式为:字符串中的每个字符以其ASCII码值的二进制形式存放,且会在末尾加一个‘\0’作为结束标志。例“st”的实际储存方式为s t \0,它不是占用2个字节,而是3个字节,最后一个字节为\0
如果想把一个字符串存放到变量中保存起来,必须使用字符组数,而数组中每个元素存放一个字符。

变量

变量名
即标识符 只能由字母、数字、下划线组成。
变量类型
整型变量

  • 整型变量的类型

    int最大值(补码)01111 1111 1111 1111 =2^15-1
    int最小值(补码)1000 0000 0000 0000=-2^15
    无符号型int最大值(补码)1111 1111 1111 1111=2^16-1
    最小值0
    long最大值(补码)0111 1111 1111 1111 1111 1111 1111 1111=2^31-1
    long最小值(补码)1000 0000 0000 0000 0000 0000 0000 0000=-2^31
    无符号型long(补码)最大值2^32-1
    最小值0

实型变量
实型数据在内存中占4个字节,是按照指数的形式储存的。例-3.14159的存放形式为
(-)(3.14159)(1)
符号位 小数部分 指数
注:所有实型数据均为有符号实型数。

  • 实型变量类型

    单精度浮点型变量存放数据时,能保证6~7位有效数字,双精度能保证15 ~16位有效数字。

字符变量
字符常量是用来储存字符常量的,即根据ASCII码数值对应的字母,每个字符占用一个字节,类型名时char。

  • 字符变量的类型

    应用例:
    变量的输出形式取决于printf中的格式串中的格式,当用%c格式时,输出的就是字符,当用%d格式时,输出的就是整数。

运算符及表达式

运算符
C语言运算符按功能可分为:
(1)算术运算符【+,-,*,/,%(整数求余),++,–】

  • 算数运算符的属性
    注:基本的算术运算符包括+,-,*,/和%。在基本的算术运算符中,单目运算符(+,-)的优先级高于双目(+,-, ,/,%)。双目运算符的优先级从高到低为:(,/,%),(+,-)。

  • 除法运算符 两个操作数如果都是整数,其结果为整数,小数部分舍去;如果都是实数,则结果为实数。即按照操作数的格式走。如4/3=1。小数部分舍去,若为4.0/3或4/3.0则输出小数点后一位。

  • 取余数运算符 两个操作数必须是整数,结果也是整数。

  • 圆括号()的优先级最高

  • 自增自减运算符
    优先级高于所有双目运算符。且只能用于变量,++与–本事优先级一样,遵从“自右向左”原则。

  • 前缀时,表示变量先自动加1或自动减1,然后在参加其他运算,即改变变量的值再使用,如++k。

  • 后缀时,先运算后加1或减1,即先使用后改变,如k++。
    (2)关系运算符【>,<,==(等于),>=,<=,!=(不等于)】
    它的结果逻辑值时“0”或“1”,即满足关系则为真“1”,不满足则为假“0”!!!
    注:其与数学表达式的区别。如:
    -5<x<2
    在数学中表示范围为(-5,2),C语言中为先对-5<x进行计算,再将运算结果(0或1)和数值2进行比较。
    (3)逻辑运算符【!(逻辑求,即非0为真,如!1=0,!5=0,!0=1),&&(逻辑运算符,如a&&b表示a与b),||(逻辑,如a||b表示a或b)】
    它的输出结果也为真或假,即“1”或“0”。

  • a&&b。若a和b两个运算对象同时为真,则结果为真,否则只要一个为假,结果为假。例如:
    15>13&&14>12
    由于15>13为真,14>12也为真,逻辑与的结果为真“1”。

  • a||b。若a和b同时为假,则为假,否则只要一个为真,结果为真。例如:
    15<10||15<118
    由于15<10为假,15<118为真,逻辑与结果为真“1”。

  • !a。若a为真时,结果为假;反之,若a为假,结果为真。例如:!(15>10)的结果为假“0”。
    (4)位运算符【<<(左移运算符),>>(右移运算符),~(按位取),|(按位运算符),^(按位 异或运算符,&(按位运算符)】

  • &按位与运算符。按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位想与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
    例如: 9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码)00000001 (1的二进制补码)可见9&5=1。

    按位与运算通常用来对某些位清0或保留某些位。例如把a的高八位清0,保留低八位,可作a&255运算( 255的二进制数为0000000011111111)。

main()
{
 int a=9,b=5,c; c=a&b;
 printf("a=%d\nb=%d\nc=%d\n" ,a,b,c);
}
  • |按位或运算符。按位或运算符"|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有-个为1时,结果位就为1。参与运算的两个数均以补码出现。
    例如: 9|5可写算式如下:00001 001 |00000101

    00001101 (十进制为13)可见9|5=13

main()
{
 int a=9,b=5,c;c=a|b;
 printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
  • ^按位异或运算符。按位异或运算符“ ^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现。
    例如9^5可写成算式如下: 00001001 ^00000101
    00001 100(+进制为12)
main()
{
 int a=9;a=a^15;
 printf("a=%d\n",a);
}

(5)赋值运算符【=,复合赋值运算符】
复合赋值运算符
由赋值运算符“=”与5种算术运算符(+,-,,/,%)和5种位运算符(<,>,&,^,|)构成10种复合的赋值运算符。它们分别为:+=,-=, =,/=,%=,<=,>=,&=,^=和|=)
如:
a+=3等价于a=a+3
a
=a+3等价于a=a
(a+3)
a%=3等价于a=a%3
(6)条件运算符【? : (如:a>b?a:b表示a>b时取a,a<=b时取b)】
(7)逗号运算符【,】
(8)指针运算符【*,&】
(9)求字节数运算符【sizeof(例sizeof(int),占四个字节)】
(10)强制类型转换运算符【(类型)】
(11)分量运算符【. , ->】
(12)下标运算符【[]】
(13)其他【如函数调用运算符()】
按其在表达式中与运算对象的关系(连接运算对象的个数)可分为
(1)单目运算符(!,~,++,–,-, *,&,sizeof,(类型))
(2)双目运算符(+,-, *,/,%,>,<,==,>=,<=,!=,&&,||,<<,>>,|,^,&,=,复合赋值运算符)
(3)三目运算符(? : )
(4)其他((),[],. ,->)
C运算符的优先级和结合性
(1)优先级。通常所有单目运算符的优先级高于双目运算符。
(2)结合性。通常单目,三目和赋值运算符的时右结合性,其余均为左结合性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值