C语言 数据类型 赋值
i=3;
printf(“%d”,-i++); 输出:-3
再执行:i=i+1
跳转到第一页
【例3.1】 void main()
{
int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
9 (9) 8 (8)
printf("%d\n",i++);
printf("%d\n",i--); printf("%d\n",-i++); printf("%d\n",-i--); }
跳转到第一页
说明:字符变量中的最高位作为符号位
取值范围: -128~+127。
若用%d输出: ASCII码为0~127间的字符,则输出一个正整数。
若ASCII码为128~255,则得到一个负整数。 若将字符变量定义为unsigned char型,此时取值范 围为0~255。
跳转到第一页
8 (9)
9 (8)
- 8 (9)
- 9 (8)
跳转到第一页
【例3.2】 int main() { int i=5,j=5,p,q; p=(i++)+(i++); P=(i++)+(i++)+(i++); q=(++j)+(++j); q=(++j)+(++j)+(++j);
慎 用!
运行结果: 10,14,7,7 VC++6.0 运行结果: 15,22,8,8
2 .算术表达式的优先级和结合性:
(1) 算术表达式定义
用算术运算符、括号将运算对象(操作数)
连接起来,符合C语法规则的式子。
• 运算对象:常量、变量、函数
P384 附录F C库函数
0.25 y x a b 3 .6
跳转到第一页
• •
结合性:自左向右,左结合性 优先级: * / % + -
p r o g r a m \0
字符串结束 标记 二个字节
“a"
„a‟一个Leabharlann 节跳转到第一页第六节
变量赋值
C规定,可以在定义变量时对变量进行初始化。
方法为:变量=表达式
如:float f=3.56;
相当于: float f; f=3.56;
char c=„a‟; 相当于:
int a,b,c=5; 相当于:
例 #include <stdio.h> int main() {int i,j; i=3; j=i++; printf(“%d, %d”,i,j); return 0; }
运行结果:4,3
跳转到第一页
• 只能用于变量,不能用于常量和表达式。
• 结合性为自右至左,即右结合性。
注意:
使用+ +和- - 时,常会出现一些人们“想不到” 的副作用,大家慎用!
跳转到第一页
例3.3 int main ( ) 运行结果: { int i; 5 23.000000 float f; i = 5.34; f = 23; printf ( "%d %f\n", i, f ); return 0; }
4)无符号整型与有符号整型 例3.4 1 1 11 11 11 11 11 11 11 b int main( ) { unsigned short a; 11 11 11 11 11 11 11 11 a short b = -1; a = b; printf ( "%d -> %u\n", b, a ); a = 65534u; b=a; printf ( "%d -> %u\n", b, a ); return 0; }
实型(浮点型)
跳转到第一页
2.基本类型的分类及特点 P45表3.2 P50表3.4
字符型 基本整型 类型说明符 char int 字节 1 2/4 数值范围 C字符集 -32768~32767 -214783648~214783647
短整型 长整型 无符号型
short long unsigned
2 4
2/4 4 4 8
-32768~32767 -214783648~214783647 0~65535 0~4294967295
0~4294967295
无符号长整型 unsigned long 单精度实型 双精度实型 float double
0以及1.2*10-38~13.4*1038
0以及2.3*10307~1.7*10308
跳转到第一页
b='y';
字符型数据和整形数据之间可以通用。 内存中 的数据 字符形式输出:ASCII码转换成字符再输出。 整数形式输出:将ASCII码作为整数直接输出。
字符数据参加算术运算时,相当于对其ASCII码
进行算术运算,运算前将1个字节转换为2个字节。
跳转到第一页
[例2.11]:字符变量的赋值 int main ()
printf("%d,%d,%d,%d",p,q,i,j); VS2010: return 0; }
跳转到第一页
运行结果: 15,24,8,8
第九节 赋值运算符和赋值表达式
1.赋值运算
变量 = 赋值表达式
例如,x = 5 +3; 作用:将表达式的值赋给变量(构成赋值表达式) 如: ave = ( a + b ) / 2; 先计算(a+b)/2,结果赋给 ave
(! && ||) (= 及其扩展赋值运算符) :) (,) (* 和 &)
9.求字节数运算符
10. 强制类型转换运算符 11.分量运算符 12.下标运算符 13.其它
(sizeof)
(类型) (. →) ([ ])
跳转到第一页 (如函数调用运算符())
1 .算术运算符:
运算符 名称 * 乘 / 除 + 加 - 减 % 模(求余) 功能 求 a 与 b 之积 求 a 除以 b 之商 求 a 与 b 之和 求 a 减 b 之差 求 a 除以 b 之余数 示例 3.6*2.0 5.5/1.1 8+12 2001-1000 7%3 表达式值 7.2 5.0 20 1001 1
地址
b c
2字节
2字节
内存
…...
随机数
跳转到第一页
第七节
在C程序中:
不同类型数据的混合运算
运算规则:
不同类型数据运算时先转换成同一类型。 自动转换
转换的方法
强制转换
跳转到第一页
一.自动转换 (隐式转换)
什么情况下发生?
运算转换---不同类型数据混合运算时 赋值转换---把一个值赋给与其类型不同的变量时 输出转换---输出时转换成指定的输出格式 函数调用转换---实参与形参类型不一致时转换
第三章 最简单的C程序设计
3.2 数据的表现形式及运算 3.3 C语句
C的数据类型 常量与变量的概念 各种数据类型的常量及变量 变量赋初值 不同类型数据间的混合运算 几种基本运算符及其表达式
跳转到第一页
小
1.C的数据类型
结
基本类型,派生类型,指针类型,空类型
短整型(short) 基本型(int) 整型 字符型(char) 基本类型 无符号型(unsigned) 长整型(long) 单精度(float) 双精度(double)
{ char c1,c2; c1=97; c2='b'; printf("%c,%c\n",c1,c2); printf("%d,%d\n",c1,c2); return 0;
作业
运行结果:a,b
97,98
}
跳转到第一页
[例2.12]:大小写字母的转换
int main () { char c1,c2; c1='a'; c2='b'; 运行结果:A,B c1=c1-32; c2=c2-32; printf("%c,%c\n",c1,c2); return 0; }
char c;
c=„a‟;
int a,b,c;
c=5;
注意:对几个变量赋同一个初值的方法为: int a=5,b=5,c=5;
int a=b=c=5;
int a,b,c; 不正确! a=b=c=5;
跳转到第一页
例如:
地址
short a=1, b=-3,c;
…...
a
地址
1 -3
2字节
编译程序根据变量 定义为其分配指定 字节的内存单元
跳转到第一页
运算转换: 先转换成同一类型,然后进行运算。 高 double float 说 明:
long
必定的转换 运算对象类型不同时转换
unsigned
int
低
char, short 图 3.10
跳转到第一页
跳转到第一页
二.强制转换 (显式转换)
一般形式:(类型名)(表达式)
其功能是把表达式的运算结果强制转换成类型 说明符所表示的类型。 如: ( double ) a
跳转到第一页
第八节
运算符与表达式
C语言中,把几乎所有的基本操作
都作为运算符来处理:
跳转到第一页
1.算术运算符 2.关系运算符
3.逻辑运算符 4.位运算符 5. 赋值运算符 6.条件运算符 7. 逗号运算符 8.指针运算符