运算符和表达式
表达式由操作符和操作数组成
表达式的产生有以下两种情况:
1.放在赋值语句的右侧
2.放在函数的参数中
每个表达式的返回值都具有逻辑性
表达值的使用
#include <stdio.h>
int main(int argc, char const *argv[])
{
ine a,b,v;
int a=1;
int b=2;
int c=3;
printf("the frist number is:%d\n",a );
printf("the second number is:%d\n",b );
return 0;
}
运算性质
赋值运算符
算数运算符
增1和减1:
作为前缀运算符时:
++ n --n;
m=++n:/*n=n+1
m=n b
*/
作为后缀运算符时:
n++ n–:
m=n++:/*m=n
n=n+1
*/
类型强转
关系运算符
逻辑运算符
位运算符
操作数
运算对象(常量、变量、函数)
自动类型转换:
数值溢出:
上溢出:
|一个数值运算结构|>|类型能表示的最大数|
进位超过最高位而发生进位丢失
或进位到达最高位而改变符号位
对不同类型数据的运算结果,取值范围较大的类型
所有操作数都转换成取值范围较大的操作数的类型
数值精度损失:
在不同类型的数据进行强行转换的过程中,小范围的数据类型转换成大范围的数据类型会损失其中的精度
printf();格式字符
%d 输出十进制有符号int型
%u 输出十进制无符号int型
%f 以小数形式(6位小数)输出float,double型
%e 以标准指数形式输出float,double型
%c 以字符形式输出单个字符
l 加d、u前输出long型
h 加d、u前输出short型
m 数据占用的最小域宽
ASCLL码可以大小写英文字母的ASCLL码值相差32
单个字符的输入输出:
putchar(a) /像屏幕输出一个字符,字符型变量a的值/
字符输入函数getchar()
a =getchar() /从键盘接受的字符作为getchar()的函数值
无参数/
/*大写英文字母转换成小写英文字母*/
#include <stdio.h>
int main(int argc, char const *argv[])
{
char a;
putchar("请输入您的英文字母");
a=getchar();
a=a+32;
putchar(a);
putchar('\n');
return 0;
}
/*输入三个数据类型 整型 字符型 浮点*/
#include <stdio.h>
int main(){
int a;
char b;
float c;
printf("Please input an integer :" );
scanf("%d",&a);
printf("integer:%d\n",a );
printf("Please input a charreacter:");
scanf(" %c",&b);
printf("%c\n",b );
printf("Please input a float number:" );
scanf("%f",&c);
printf("%f\n",c );
return 0;
}
关系运算符和逻辑运算符
关系运算符
算术运算符->关系运算符(true(1) false(0))
<
<==
高于后两个优先级
==
!=
/*例子*/
#include <stdio.h>
int main(){
int a,b,c;
a=1;
b=2;
c=3;
printf("%d\n",a>b>c );
/*
a>b>c我们可以看作(a>b)>c
(a>b)=3>2,为真,所以a>b的值为1
带入(a>b)>c中,得出1>1,
所以a>b>c的假=0
*/
return 0;
}
逻辑运算符和逻辑表达式
&& 逻辑与
|| 逻辑或
! 逻辑非
逻辑非——右结合
逻辑运算符的短路特性:
若表达式的值可有先计算的左操作数的值单独推导出来,那么将不再计算右操作数的值
条件表达式:
表达式1 ? 表达式2 :表达式3
/如果表达式1的值为真,那么将表达式2的值赋给整个条件表达式,如果表达式1的值为假,
那么将表达式3 的值赋给整个条件表达式/
/*列子;求两个数的最大值*/
#include <stdio.h>
int main(){
int a ;
int b;
printf("Input a,b");
scanf("%d %d",&a,&b);
printf("max=%d\n",a>b ? a:b);
return 0;
}