//变量分类
//全局变量
//局部变量
#include<stdio.h>
//全局变量-大括号外部定义的变量
int a =100;
int main()
{
int a = 10;
int a = 10000;//变量重定义
//局部变量-大括号内部定义的变量
printf("a=%d",a);
//局部变量和全局变量重复的时候选择全局变量
return 0;
#include<stdio.h>
int main()
{
int sum1=0;
int sum2=0;
int sumk=0;
scanf("%d %d",&sum1,&sum2);
sumk=sum1+sum2;
printf("%d\n",sumk);
return 0;
}
#include<stdio.h>
int main()
{
const int a = 1000;
a=99999;
printf("%d\n",a);
return 0;
}
int main()
{
printf("%d\n",max);
max=999;
printf("%d\n",max);
return 0;
}
//操作符
运算符操作符操
#include<stdio.h>
int main()
{
int a = 7 / 2;
int b = 7 % 2;//取余/数
float c = 7 / 2.0;
printf("%d\n",a);
printf("%d\n",b);
printf("%f\n",c);
return 0;
}
移位操作符
int main()
{
int a = 12;//a是整形,4个字节,32bit
int b = a << 2;//左移操作符
//00000000000000000000000001100
//移动的二进制位
printf("b=%d\n",b);
return 0;
}
位操作符(& ^ |)
& 按(2进制)位与
| 按(2进制)位或
^ 按(2进制)位异或
int main()
{
int a = 3;
int b = 5;
int c = a&b;//按位与——有0则为0
int d = a|b;//按位或——对应的二进制位有1则为1
int e = a^b;//按位异或-相同为0,相异为1
printf("c=%d\n",c);
printf("d=%d\n",d);
printf("e=%d\n",e);
return 0;
}
//赋值操作符
int main()
{
int a =10;//初始化
float score = 0.0;
score = 95.5;//直接写出来的浮点数默认是bouble类型的
a = 45;//赋值
a = a +5;
a +=5;//复合赋值符
a -=5;
a*=5;
return 0;
}
int main()
{
3 + 5;//+操作符
//3 和 5是操作数
//3是左操作数
//5是右操作数
//+双目操作符
//单目操作符——只有一个操作数的操作符
int flag =0;
//C语言是如何表示真假的?
//0就是假,非0就是真
if(flag)
{
printf("hehe\n");
}
if(!flag)//flag为假,打印haha
{
printf("haha\n");
}
int b =!flag;
printf("%d\n",b);
return 0;
sizeof是操作符 不是函数
}
int main()
{
int a = -10;
//a=-a
}
int main()
{
int a = 10;
int arr[10]={0};
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(a));
printf("%d\n",sizeof a );
int sz = sizeof(arr)/sizeof(arr[0]);
printf("%d\n",sz);//4
return 0;
}
~ - 按(2进制)位取反
如果一个整数存储在内存中的二进制序列是:
00010101001010101000101010100010
111010101101010101110101010111101
计算机识别的是二进制
整数存放在内存中也存放的是二进制
整数的二进制怎么表示?
整数的二进制表示方式有三种:
原码-直接按照数字的正负转换成二进制就是原码
反码-原码的符号位不变,其他位按位取反,就是反码
补码-反码+1,就是补码
正整数的原码,反码,补码是相同的
负整数的原码,反码,补码要计算
规定:对于有符号整数,二进制的最高位是符号位
最高位是0,表示正数
最高位是1,表示负数
int main()
{
int a = 0;//32bit
//00000000000000000000000000000000 - 原码
//00000000000000000000000000000000 - 反码
//00000000000000000000000000000000 - 补码
int b = -1;
//10000000000000000000000000000001 - 原码
//11111111111111111111111111111110 - 反码
//11111111111111111111111111111111 - 补码
printf("%d\n",~a);
return 0;
}
++--
int main()
{
//++--
int a = 10;
//int b = a++;//后置++,先使用,再++
int b = --a;//前置++,先++,后使用
printf("%d\n",a);//9
printf("%d\n",b);//10
return 0;
}
int main()
{
int a = (int)3.14;
printf("%d\n",a);
return 0;
}
逻辑操作符 && || 逻辑与 逻辑或
int main()
{
//法定结婚年龄
//男:22
//女:20
//A B
//&&并且,逻辑与
//||或者,逻辑或
if((A>=22)&&(B>=20))
{
}
return 0;
}
int main()
{
int a = 10;
int b = 20;
int max = 0;
// if(a>b)
// max=a;
// else
// max=b;
//条件操作符
max = (a>b) ? (a) : (b);
printf("%d\n",max);
return 0;
}
//逗号操作符
int main()
{
int a =3;
int b =5;
int c =6;
int d =(a -= 2,b=a+c,c=a-b);
// a=1,b=7,c=-6
//逗号表达式--从左向右以此计算,整个表达式的结果是最后一个表达式的结果。
printf("%d\n",d);
return 0;
}
int 表示函数调用完成之后返回一个整数
int Add(int x,int y)
{
int z = x+y;
return z;
}
void test()
{
printf("test\n");
}
void是无的意思
函数test调用完成以后无返回
int main()
{
// int arr[10]={1,2,3,4,5,6};
// arr[4];//[] - 就是下标引用操作符
int a = 10;
int b = 20;
int sum = Add(a,b);
//函数调用,()就是函数调用操作符
//()的操作数是 Add, a, b
printf("sum=%d\n",sum);
return 0;
}
C语言规定的关键字
int float for while return
int main()
{
int a=10;//auto
return 0;
}
typedef unsigned int uint;
//
int main()
{
//int a=10;//auto
unsigned int age = 10;
unit age2 = 20;
}
static有三种用法
1.static修饰局部变量
2.static修饰全局变量
3.static修饰函数
void test()
{
static int a = 1;
a++;
printf("%d ",a);
}
int main()
{
int i = 0;
while(i<10)
{
test();
i++;
}
return 0;
}
static修饰局部变量,使得局部变量出了自己的范围也不销毁,实际上是改变了局部标量的生命周期
staric修饰全局变量,会使得全局变量失去外部链接属性,变成内部连接属性,所以static修饰的全局变量,只能在自己所在的.c文件中使用
声明外部符号
int Add(intx,inty);
int main()
{
int a = 10;
int b = 20;
int C = Add(a,b);
printf("%d\n",C);
return 0;
}