一.输入与输出函数
1.输出函数:printf()
案例:
printf ( "%d\n" , x) ;
printf ( "%d %d\n" , x, y) ;
2.输入函数:
2.1 scanf()
案例:
int x;
scanf ( "%d" , & x) ;
char y;
scanf ( "%c" , & y) ;
int a, b;
scanf ( "%d %d" , & a, & b) ;
2.2 getchar()
案例:
char ch;
ch = getchar ( ) ;
printf ( "%c\n" , ch) ;
二.运算符和表达式
案例:
a+ b, x= a+ 2 , x= y> z, x++
1. 算术运算符: + , - , * , / , % , ++ a ( 前自增) , a++ ( 后自增) , -- a ( 前自减) , a-- ( 后自减)
2. 赋值运算符: = , += , -= , *= , /= , %= ( = 代表赋值,== 代表相等)
案例: a= 2 表示将2 赋值给a ( a: 左值,2 :右值)
y = ×+ 100
y = 200
y = X
y = X+ 200
c + 1 = 10 是错误的
3. 关系运算符:
包含:== , > , < , >= , <= , != ( 不等于)
4. 逻辑运算符:
包含:! , && , ||
逻辑真(关系成立):非0
逻辑假(关系不成立):0
注意:1 是“真”,但是“真”不是1 ( 只要不为0 ,就都为真)
错误案例:
int x;
scanf ( "%d" , & x) ;
if ( 60 <= x <= 70 )
{
printf ( "及格" ) ;
}
结果:无论输出什么都是及格,因为该判断语句会先执行60 <= x, 得到0 / 1 然后执0 / 1 <= 70
正确案例:
int x;
scanf ( "%d" , & x) ;
if ( x>= 60 && x<= 70 )
{
printf ( "及格" ) ;
}
4.1 逻辑短路:
int main ( )
{
int a = 1 ;
if ( 1 || ++ a) ;
printf ( "a = %d\n" , a) ;
if ( 0 || ++ a) ;
printf ( "a = %d\n" , a) ;
}
5. 位运算符:
包含:& , | , >> , << , ^ , ~
练习:通过printf打印变量的二进制数
int x, m, a[ 16 ] = { 0 } , i= 0 ;
scanf ( "%d" , & x) ;
if ( x< 0 )
{
x= - x;
m= 1 ;
}
while ( x!= 1 )
{
a[ i++ ] = ( x% 2 ) ;
x/= 2 ;
}
a[ i] = x;
printf ( "%d" , m) ;
for ( int j= 14 ; j>= 0 ; j-- )
{
printf ( "%d" , a[ j] ) ;
}
printf ( "\n" ) ;
5.1 扩展
5.1 .1 变量交换:不使用中间变量交换两个整型变量的值
案例:
int a= 3 , b= 4 ;
a^= b;
b^= a;
a^= b;
5.2 判断奇偶性
案例1 :( a% 2 )
int a= 0 ;
scanf ( "%d" , & a) ;
if ( a% 2 ) printf ( "奇数" ) ;
else printf ( "偶数" ) ;
案例2 :( a& 1 )
int a= 0 ;
scanf ( "%d" , & a) ;
if ( a & 1 ) printf ( "奇数" ) ;
else printf ( "偶数" ) ;
5.3 高低位交换
案例:
int a= 0x12345678 ;
a= ( a>> 16 ) | ( a<< 16 ) ;
printf ( "%x" , a) ;
5.4 置位和清零
置位案例:
int a= 5 ;
a|= 1 << 3 ;
printf ( "%d\n" , a) ;
清零案例:
int b= 9 ;
b&= ~ ( 1 << 3 ) ;
printf ( "%d\n" , b) ;
5.5 数据的“拆解”:在数据的传输过程中需要对整型数据进行拆解,例如 int x =
0x12345678 ,我们需要将x分别拆解成0x12 0x34 0x56 0x78 进行传输
案例:
int x= 0x12345678 , b, c, d, e;
b= ( x>> 24 ) & 0xFF ;
c= ( x>> 16 ) & 0xFF ;
d= ( x>> 8 ) & 0xFF ;
e= x& 0xFF ;
printf ( "b=%x,c=%x,d=%x,e=%x" , b, c, d, e) ;
5.6 数据的“组装”:“拆解”的反向操作
int x;
x = ( 0x12 << 24 | 0x34 << 16 | 0x56 << 8 | 0x78 ) ;
printf ( "%x\n" , x) ;