变量:在程序运行过程中可以改变的在这里插入代码片
int main()
{
int a=10;//a位局部变量
}
a=10: =位赋值 左边是坐值 右边为右值
局部变量默认值是随机值且不能使用未初始化的局部变量
内存分为:
栈(stack) 特性: 先进后出 作用域:在花括号{}之间 生命周期:程序或函数运行完,内存自动回收
堆(heap) 必须由程序员手动释放内存
调试 :1、打断点(点击鼠标)2、逐过程、逐语句
常量:程序运行过程不可改变的
const int a=10;//const为关键字 作用定义常量
*定义常量时必须要进行初始化编译时确定值
define People 10
define为宏 作用:预编译(.C–.i)、注释的替换(空格)、头文件的引入
运算符:():函数、提升优先级、强制类型转换
!: 逻辑非 (a=1;//!a=0 !!a=1)
~:按位取反 例 4=0000 0100 ~4=1111 1011
》:安位右移
《 :按位左移
^:异或
&&:取地址符 与
*:定义指针
sizeof:关键字 求当前变量字节 且程序编译期间只确定类型,不参与运算 对于指针类型都为4字节
?:
if
{
a>b? a:b;//如果a>b返回a否则返回b
}
else
{
}
**程序举例`
# include <stdio.h>
int main()
{
int a=10;
a+=10;//a=a+10
printf("%d\n",a);
return 0;
}
# include<stdio.h>
int main()
{
/*int a=10;
a+=10;
printf ("%d\n",a);
return 0;*/
float f1 = 5/2;//5/2=2.5 取整数2.000000
float f2 = (float)5/2;//强转
float f3 = (float)(5/2);//()运算符优先级比较大
float f4 = 5/(float)2;//5/2=2.5
printf ("%f\n",f1);
printf ("%f\n",f2);
printf ("%f\n",f3);
printf ("%f\n",f4);
return 0;
}
# include<stdio.h>
int main()
{
printf("%d\n",10%3);//10/3....1
printf("%d\n",-10%3);//-10/3==-3....-1
printf("%d\n",-10%-3);//-10/-3==3...-1
printf("%d\n",10%-3);//10/-3==-3...1
return 0;
}
int a = 10;
printf("%d\n",sizeof(a));
printf("%d\n",sizeof a );
printf("%d\n",sizeof (int) );
return 0;
int a=10;
int *p=&a;
printf("%d\n",sizeof a);
return 0;
指针类型都为4字节
int a = 10;
int* p = &a;//*:代表指针
*p = 100;//*:间接访问符 ==》 解引用
printf("%d\n",a);//100
int **pp = &p;
**pp = 10000;
printf("%d\n",a);//10000
int i = 1;
int i2 = 0;
int i3 = 2;
if(i++ && i2++ && i3++) //逻辑与 i&&i2为假所以直接else 所以i+1,i2+1,。
{
printf("is true\n");
}
else
{
printf("is false\n");
}
printf("%d,%d,%d\n",i,i2,i3);
}
# include<stdio.h>
int main()
{
char ch = '郭';
printf("%c\n",ch);//汉字是两个字节所以打印不出来
char ch1[5]="高";
printf("%s\n",ch1);
}