除法 /
浮点数除浮点数最后结果是浮点数
例如:a=7.0/4=1.75
但是:a=7/4=1 只有商,没有小数部分。
求模运算符%
求模运算符只能用于整数运算。
13%5=3 只有余数
sizeof是计算变量或者类型所占的空间大小,单位是字节。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a= 7;
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(int));
return 0;
}
移位操作符:<< >>
<< 左移操作符
>> 右移操作符
#include<stdio.h>
int main()
{
int a=2;
b=a<<1;
printf("%d\n",b);
return 0;
}
位操作符
& 按位与:0与1为0;
| 按位或:有1就是1;
^ 按位异或:对应的二进制位相同,则为0;对应的二进制位相反,则为1;
单目操作符:有一个操作数
!:在c语言中,0为假,非零为真。
#include<stdio.h>
int main()
{
int a=10;
printf("%d\n",!a);
return 0;
}
sizeof是一个操作符,计算类型或者变量的大小。这个代码在数组里面有。
~操作符:按位取反
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 0;
printf("%d\n", ~a);
return 0;
}
负数在内存中存储的是二进制的补码
打印的是原码
一个整数的二进制表示有三种:原码、反码、补码
-1:原码 10000000 00000000 00000000 00000001(最高位是符号位)
原码按位取反是反码、反码加1是补码,以上是负数的计算
正整数原码、反码、补码都相同。
++;前置++,先++,后使用
一般认为前置++是先将变量的值加1,然后使用加1后的值参与运算;而后置++是先使用该值参与运算,然后再将该值加1。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 10;
int b = ++a;
printf("%d\n", a);
printf("%d\n", b);
return 0;
}
后置++;先使用,再++;
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 10;
int b = a++;
printf("%d\n", a);
printf("%d\n", b);
return 0;
}
(类型)强制类型转换
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = (int)3.14;
printf("%d\n", a);
return 0;
}
逻辑操作符: &&逻辑与、||逻辑或
逻辑与:都为真才是真
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 5;
int b = 3;
int c = a && b;
printf("%d\n", c);
return 0;
}
逻辑或:有一个真就是真
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 5;
int b = 0;
int c = a || b;
printf("%d\n", c);
return 0;
}
条件操作符:exp1?exp2:exp3
条件操作符:三个表达式。
exp1成立,exp2计算,整个表达式的结构是:exp2的结果。
exp1不成立,exp3计算,整个表达式的结构是:exp3的结果。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 5;
int b = 0;
int c = 0;
c = a > b ? a : b;
printf("%d\n", c);
return 0;
}
逗号表达式:从左到右依次计算,整个表达式的结果是最后一个表达式的结果。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 5;
int b = 0;
int c = 0;
int d=(a=b+7,b=a-2,c=9+b);
printf("%d\n", d);
return 0;
}
函数调用操作符:函数后面的();
只要是整数,内存中存储的都是二进制的补码
正数---原码 反码 补码都相同
负数:
原码 反码 补码
直接写出 原码的符号位不变,其他位按位取反 反码加1
常见的关键字:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
typedef unsigned int u_int;
int main()
{
unsigned int num = 100;
u_int num2 = 100;
return 0;
}
static——静态的
static修饰局部变量,改变了局部变量的生命周期。保证变量出了局部变量之后不销毁。
1.static 修饰局部变量
2.static 修饰全局变量
3. static 修饰函数
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void test()
{
int a = 1;
a++;
printf("%d\n", a);//a出函数之后,值消失。a是局部变量
}
int main()
{
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}
加了static之后
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void test()
{
static int a = 1;
a++;
printf("%d\n", a);//加了static之后,a不会销毁。
}
int main()
{
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}
static修饰全局变量,局部变量的生命周期变长。
extern是用来声明外部符号的
加了static之后
编译无法进行
原因是static修饰全局变量,使得这个变量只能在自己所在的源文件(.c)内部使用.其他源文件不能使用;
static修饰全局函数
加入static之后
无法编译.
static修饰函数使得函数只能在自己源文件中使用.
#define定义常量和宏
define是预处理指令
1.定义符号
#define MAX 1000
int main ()
{
printf("%d\n",MAX);
return 0;
}
2.define定义宏
#include <stdio.h>
#define ADD(x,y) ((x)+(y))
int main()
{
printf("%d\n",4*ADD(2,3));
return 0;
}
getchar putchar 使用方法
getchar可以接收键盘的一个字符
#include <stdio.h>
int main()
{
int ch = getchar();
putchar (ch);//输出字符,和下面的printf作用一样
printf("%c\n", ch);
return 0;
}