三、运算符。
四则运算: + - * /
模运算: %
赋值运算: = == != += -= *= /=
逻辑运算: & && | ||
自增自减: ++ --
需要注意的点:
1、把一个浮点型的数据赋值给一个整型的变量,那么精度降低。
2、把整型数据赋值给一个浮点型的变量,那么就会在后面补0。
3、除法。
5/2 -> 2
5.0/2 -> 2.5
5/2.0 -> 2.5
5.0/2.0-> 2.5
4、模运算。
5%2 -> 1
5.0%2 -> 错
5%2.0 -> 错
5.0%2.0 -> 错
5、& && | ||
& --> 位与运算
&& --> 逻辑与运算
| --> 位或运算
|| --> 逻辑或运算
与: 必须两者都为真,才为真。
或: 只要有一个为真,那么就为真。
一个符号 -> 先转换为2进制数字,然后使用 与/或 逻辑去计算
二个符号 -> 非零即真
#include
int main(int argc,char *argv[])
{
//int a;
//a = 5%2;
//printf("a = %dn",a); //1
//a = 5.0%2;
//printf("a = %dn",a);
//a = 5%2.0;
//printf("a = %dn",a);
//a = 5.0%2.0;
//printf("a = %dn",a);
// & && | ||
//int a = 10;
//a += 5; // a = a +
//printf("a = %dn",a);
//int b = 10;
//b++;
//printf("b = %dn",b); //11
//int c = 20;
//++c;
//printf("c = %dn",c); //21
//前置++ 与 后置+= 区别
//前置++ 先加1 ,再运算
//后置++ 先运算 , 后加1
int b = 10;
printf("b = %dn",b++); //10 先打印,再+1
printf("b= %dn",b); //11
int c = 10;
printf("c = %dn",++c); //11 先+1 再打印
printf("c = %dn",c); //11
return 0;
}
四、ASCII码。
1、如何在Ubuntu上查看ASCII码表?
gec@ubuntu:/mnt/hgfs/GZ2180/01 C语言/02/code$ man ascii (按'q'退出)
2、ascii码表作用是什么?
ascii - ASCII character set encoded in octal, decimal, and hexadecimal
//将字符转换成对应的八进制、十进制、十六进制数字
3、如何查看ascii码表?
char类型的数据占用1个字节 --> 8位 --> 2^7 = 128 (取值范围:0~127)
八进制 十进制 十六进制 字符
Oct Dec Hex Char
000 0 00 NUL '' (null character) 十进制的0 等价于 字符'' (代表一个空白的字符)
012 10 0A LF 'n' (new line) 十进制的10 等价于 字符'n'
060 48 30 0 十进制的48 等价于 字符'0'
101 65 41 A 十进制的65 等价于 字符'A'
141 97 61 a 十进制的97 等价于 字符'a'
4、printf()输出格式符号。
%d --> 以十进制的形式来输出结果
%o --> 以八进制的形式来输出结果
%x --> 以十六进制的形式来输出结果
%c --> 以字符的形式来输出结果
%f --> 以浮点型来输出结果。 --> 默认输出小数点后6位。
%.4f--> 以浮点型来输出结果。 --> 指定输出小数点后4位。
%s --> 输出字符串
%p --> 输出指针
#include
int main(int argc,char *argv[])
{
int a = 65;
printf("a = %dn",a); //65 //以十进制形式来输出a变量的值
printf("a = %on",a); //101 //以八进制形式来输出a变量的值
printf("a = %xn",a); //41 //以十六进制形式来输出a变量的值
printf("a = %cn",a); //A //以字符形式来输出a变量的值
int b = 0;
printf("b = %dn",b); //0
printf("b = %on",b); //0
printf("b = %xn",b); //0
printf("b = %cn",b); //
char c = 'a';
printf("c = %dn",c); //97
printf("c = %on",c); //141
printf("c = %xn",c); //61
printf("c = %cn",c); //a
return 0;
}
5、ascii码表存在说明了一个问题。
其实字符类型的数据就是整型数据。
五、标准C库中的IO函数。
1、IO函数是什么?
IO函数 --> input/output函数 --> 输入/输出函数 --> scanf()/printf()
2、它们的作用是什么?
printf() --> 输出某段内存空间上的值。
scanf() --> 从键盘中获取一些值,并放在内存空间中。
3、scanf()函数作用。
例如:我从键盘中获取一个整型的数据,并且把这个数据存放在一个整型变量中。
1)输入单个数字。
#include
int main(int argc,char *argv[])
{
int x = 100; //在栈区连续申请4个字节的空间,并使用变量x间接访问这片空间。
printf("x = %dn",x); //将内存中x变量的值输出
scanf("%d",&x); //从键盘中获取一个十进制数据,然后存放在&x这个地址指向的内存空间上。
printf("x = %dn",x); //将内存中x变量的值输出
return 0;
}
2)输入多个数字。
#include
int main(int argc,char *argv[])
{
int x = 100; //在栈区连续申请4个字节的空间,并使用变量x间接访问这片空间。
int y,z,k;
printf("x = %dn",x); //将内存中x变量的值输出
scanf("%d %d %d %d",&x,&y,&z,&k); //从键盘中获取一个十进制数据,然后存放在&x这个地址指向的内存空间上。
printf("x = %dn",x); //将内存中x变量的值输出
printf("y = %dn",y);
printf("z = %dn",z);
printf("k = %dn",k);
return 0;
}
六、逗号表达式。
计算规则:从左到右依次计算,结果以最后一个表达式为准。
例如:
int a=1,b=5,c=10,d;
d = (a=a+b,c=b+c,a+c);
printf("d = %dn",d); //21
分析:
a=a+b --> a=1+5=6 --> 现在: a=6 b=5 c=10
c=b+c --> c=5+10=15 --> 现在: a=6 b=5 c=15
a+c --> 6+15=21 把21赋值d
练习:
int a=1,b=2,c=3,d;
d = (c=a+3,b-=a,b++);
printf("d = %dn",d); // 1 2
分析:
c=a+3 --> c=1+3=4 现在:a=1 b=2 c=4
b=b-a --> b=2-1=1 现在:a=1 b=1 c=4
d = b++; 把b的值先赋值给d,然后b再加1
七、三目运算。
1、三目运算的形式:
表达式 ? 结果1 : 结果2
2、三目运算的规则:
先判断表达式的值是真还是假。
如果是真,则执行的结果就为结果1。
如果是假,则执行的结果就为结果2。
3、例子。
int a = 1,b = 2,c;
c = ( a > b ? a : b ); --> 求出a与b之间的最大值
printf("c = %dn",c); //2
练习时间:
假设有以下的表达式,"A ? i : j" 请问以下哪个表达式与之等价?
A. A==0 ? i : j;
B. A!=0 ? i : j; √
C. A==1 ? i : j;
D. A!=1 ? i : j;
"A ? i : j"
如果A为真,则结果为i。
如果A为假,则结果为j。
A==0 ? i : j;
如果A为真 ---> 说明A就是一个非0 --> 非0 == 0 ? --> 假 --> 则结果为j。
如果A为假 ---> 说明A就是一个0 --> 0 == 0 ? --> 真 --> 则结果为i。
A!=0 ? i : j;
如果A为真 ---> 说明A就是一个非0 --> 非0 != 0 ? --> 真 --> 则结果为i。
如果A为假 ---> 说明A就是一个0 --> 0 != 0 ? --> 假 --> 则结果为j。
A==1 ? i : j;
如果A为真 ---> 说明A就是一个非0 --> 非0 == 1 ? --> 不一定
A!=1 ? i : j;
如果A为真 ---> 说明A就是一个非0 --> 非0 != 1 ? --> 不一定
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)