3.30
复习
1.位运算
& | ^ ~
&:从低位到高位,每位进行与运算,遇0则0,位数不足则高位补0
|:从低位到高位,每位进行或运算,遇1则1,位数不足则高位补0
^:从低位到高位,每位进行异或运算,相同为0,相异为1,位数不足则高位补0
~:每一位取反,包括符号位
2.递增递减
++ ——
前++:先自加后赋值
后++:先赋值再自加
++a;a++; 执行完之后没有区别
3.地址运算
&:取地址符
&变量名
&a:
4.逗号运算符
(表达式1,表达式2,表达式3···)
运算规则:从左到右,取最后的表达式结果,其他结果舍弃
5.sizeof运算符
功能:计算指定的数据的数据类型的大小
int a;
sizeof(a)==sizeof(int);
sizeof(char) sizeof(short)
sizeof(long) sizeof(float)
sizeof(double)
6.三目运算符
一般形式:
表达式?表达式1:表达式2
短路法则: a=3; (1>2)&&(a=5); a=3
二、数据类型
数据类型一般分为两种:基本数据类型和用户自定义数据类型
数据都是以补码形式存储运算
1.char--字符型--1个字节
signed char:有符号(+/-)
一般省略不写则是有符号数
取值范围:-128~127
0000 0000--- 0
1000 0000--- -128
0111 1111--- 127
正数:原码=反码=补码
负数:原码--->反码--->补码
反码:除符号位外每一位按位取反
补码:反码加一
补码--->反码--->原码
反码:除符号位每一位按位取反
原码:反码加一
-56 -48 -68 -118 -37
2. int--整型--4个字节
signed int : 有符号
范围:-2的31次方~2的31次方减一
int a;
unsigned int :无符号
范围:0~2的32次方减一
long--长整型--8个字节
取值范围:0~2的64次方减一
short--短整型--2个字节
取值范围:0~2的16次方-1
float--浮点型--4个字节
精确到小数点后6-7位
float a=1.2;
if(a==1.2)
printf("1\n");
double--双精度浮点型--8个字节
精确到小数点后15-16位
三、常量
整型常量
字符型常量:('')
字符串常量:("")
浮点型常量:(实型常量)
标识符常量:
一般形式:
#define 标识符常量 数据
#define x 10
严格的替换
四、变量
一般类型:存储类型 数据类型 变量名
存储类型:
auto
register
extern
static
数据类型:char int
变量名:遵循标识符命名规则
2、初始化
int a=0;
3、赋值
int a;
a=10;
today
输入输出
字符输入函数
getchar();
功能:从键盘获取一个字符
返回值:返回获取到的字符
char a;
a=getchar();
字符输出函数
putchar(c)
功能:输出打印到终端的一个字符
#include <stdio.h>
8
9 int main(int argc, char *argv[])
10 {
11 char a;
12 a=getchar();
13 printf("a=%c\n",a);
14 putchar(a);
15 putchar('1');
16 putchar('\n');
17 return 0;
18 }
hqyj@ubuntu:~/3.30$ gcc 1.c
hqyj@ubuntu:~/3.30$ ./a.out
ss
a=s
s1
标准输出函数–printf()
一般形式:
printf("格式控制串",输出表);
格式控制符:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a=666;
char b='s';
float c=77.7;
char d[]="2324434";
printf("a=%d b=%c c=%f c=%e d=%s\n",a,b,c,c,d);
return 0;
}
hqyj@ubuntu:~/3.30$ vi 2.c
hqyj@ubuntu:~/3.30$ gcc 2.c
hqyj@ubuntu:~/3.30$ ./a.out
a=666 b=s c=77.699997 c=7.770000e+01 d=2324434
%x--十六进制形式
%o--八进制形式
%e--指数形式
%s--字符串形式
%%--%本身
修饰符:
%4d:不足四个空向左补空
%-4d:不足四个空向右补空
%04d:不足四个空用0补齐
%.4f:限制小数点后四位
%.4c:限制字符串个数
#include <stdio.h>
int main(int argc, char *argv[])
{
int a=10;
printf("%d %d %d %d %d\n",a++,a++,++a,++a,a++);
return 0;
}
hqyj@ubuntu:~/3.30$ ./a.out
14 13 15 15 10
1.在printf函数计算过程中,是遵循从右到左计算。
2.a++:会把中间变量直接赋值
3.++a:先运算一编再赋值(最终输出a的最后值),和普通a一样
a--和--a同理:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a=10;
printf("%d %d %d %d %d\n",a--,a--,--a,++a,a++);
return 0;
}
hqyj@ubuntu:~/3.30$ vi 3.c
hqyj@ubuntu:~/3.30$ gcc 3.c
hqyj@ubuntu:~/3.30$ ./a.out
10 11 9 9 10
不同的编译器结构不同,输出的结构也不同
标准输入函数–scanf()
一般形式:
scanf("格式控制串",地址表);
格式控制符:
#include <stdio.h>
8
9 int main(int argc, char *argv[])
10 {
11 int a,c;
12 char b;
13 scanf("%d%c%d",&a,&b,&c);
14 printf("a=%d b=%d c=%d\n",a,b,c);
15 return 0;
16 }
脏字符:的处理办法
1.用抑制符%*c
2.getchar函数吸收
字符串输入函数–gets()
功能:从键盘上获取一串字符串
一般形式:gets(char *s);
#include <stdio.h>
int main(int argc, char *argv[])
{
char a[50];
gets(a);
printf("%s\n",a);
return 0;
}
hqyj@ubuntu:~/3.30$ ./a.out
asdfg
asdfg
字符串输出函数–puts()
put(a);会自动换行
puts(" ");
练习:输入一个大写字母,输出对应的小写字母