C语言基础篇—

一、变量:在运行过程中可以改变的。
(1)变量的定义:变量有字母,数字,下划线组成。 (注意:第一位不能为数字,如果第一位为字母,则应为小写字母。例如:int 4c=1; 4c这个变量的定义就是错误的格式)

1> 若以该形式  int a;  定义变量,则该变量的值为一个随机值,并且我们不能使用未初始化的局部变量。
2> 不能定义  char    a="李“;因为在C语言中char类型占一个字节,汉字占两个字节。
3>如果在函数中定义了这样两个变量int a;int b; 它们在栈中是这样存储的。(栈的特点:先进后出)

栈
(2)生命周期:程序/当前函数运行完,变量的内存就会自动回收。 (注意:这里的变量指的是在栈里存储的变量,如果在堆上存储的变量需要程序员手动回收)
(3)作用域:一对花括号之间。
(4)赋值符号:“=”该符号左边的称为左值,右边的称为右值。(注意:左值不能为数字。例如:int 3=a; 这是错误的定义格式)
二、常量:在运行过程中不可以改变的。
(1)常量的定义:cconst int a=10; (注意:在定义常量的同时进行初始化,常量是在编译的时候确定它的值的)
(2)const:修饰的变量叫做常变量
(3)#define:宏

   1>宏的定义:例如: '#define PI 3.14159' (注意:定义后边  ;可加可不加,为了避免程序中的个别问题,尽量不要加!!)
   2>宏的作用:修改所定义的常量的值较为快速方便。

三、预编译阶段的任务:宏替换、注释的替换(将注释全部替换为空格、头文件的引入等等。
四、运算符
(1)():函数、提升优先级、强制类型转换
(2) ~ :按位取反
例:11:0000 1011
~11:1111 0100
(3) >>:按位右移 (右移相当于除法)
例:11>>1:0000 0101 ==5 (高位补符号位的数字) 11/2
11>>2:0000 0010 ==2 11/2^2
(4) <<: 按位左移(左移相当于乘法)
例:11<<1:0001 0110 ==22 (低位补0) 112
11<<2:0010 1100 ==44 11
2^2
(5) ^:异或
例:

11:0000 1011
13:0000 1101
11^13:0000 0110
(6) &:与
例:11&13:0000 1001
(7) |:或
例: 11|13:0000 1111
(8)++:自增

自增

运行结果为:10,12
原因:b=a++,这里的++是后增,即先将自己的值赋给b,再执行a+1.所以b=10;
执行完a+1后,a的值变为11,此时执行c=++a,这里的++是前增,即先执行a+1,执行完a+1后,a=12再赋值给c,则c等于12。
(9) - -:自减 (与++运算符类似)
(10)* * :乘法、定义指针、间接访问符

1> 例:int *a=&p (a是指向int型的指针变量)
2> int **m=&a; (m是一个二级指针,它的值为指针a的地址)

(11)sizeof:长度运算符,代表变量的所占字节数。

int main()

{
int p=10;
int *a=&p;
printf("%d\n",sizeof(p));
printf("%d\n",sizeof(a));
return 0;
}

运行结果为:
4
4

表明p、a所占的字节数是4,其中所有的指针,不管什么类型全部为四个字节。


#include<stdio.h>
int main()
{
int p=10;
printf("%d\n",sizeof(++p));
printf("%d\n",p);
return 0;
}

运行结果:
4
10

 说明sizeof运算符只在编译时确定类型,不进行运行。(此程序中没有执行++p,因此p的值仍然是10)

(11)/:除

#include<stdio.h>
 int main() 
 { int a=5;
  int b=2;
float f1=5/2;
float f2=(float)5/2;
float f3=(float)(5/2)
float f4=5/(float)2;
printf("%f\n",f1); 
printf("%f\n",f2);
printf("%f\n",f3); 
printf("%f\n",f4); 
 return 0; }

运行结果:

2.000000

2.500000

2.000000

2.500000

(12)&&:逻辑与

通过以下代码来学习

#include<stdio.h>
int main()
{
int a=0;
int b=2;
int c=3;
if(a++&&b++&&c++)
{
printf("is true\n");
}
else
{
printf("is false\n");
}
printf("%d,%d,%d\n",a,b,c);
 return 0;
}

运行结果:

is false

1,2,3

原因分析:第一个条件的值为0,假的则逻辑与后边的不再执行运算,只有有a进行了一次自加。

&&的执行过程:如果第一个条件为真,再判断第二个条件,依此类推,只要遇见值为假的条件,就不再进行后边条件的判断。

(13)复合运算符 (运算符之间不能有空格)

+= 加后赋值运算符 如s+=1表示s=s+1

-= 减后赋值运算符 如s-=1表示s=s-1

*= 乘后赋值运算符

/ = 除后赋值运算符

% = 取模后赋值运算符
< <= 左移后赋值运算符

猜你喜欢

转载自blog.csdn.net/qq_43313035/article/details/83022451