程序员——C语言之数据类型、基本运算、流程控制 易错知识点

来源:互联网 发布:python读取csv文件 编辑:程序博客网 时间:2024/05/22 02:26


1. C语言的数据类型

为了方便操作数据,C语言数据进行了分类




2.交换整型变量a、b的值

比如a=10、b=11;交换之后a的值是11,b的值是10。用三种方式实现:
// 使用第三方变量(工作用到)int temp;temp = a;a = b;b = temp;// 不使用第三方变量(面试用)a = b - a;b = b - a;a = b + a;// 使用位异或运算a = a ^ b;b = a ^ b;a = a ^ b;

3. 查看内存地址:

int a;printf("a的地址是:%p\n", &a);


4.scanf函数注意   

用scanf函数接收3个数值,每个数值之间用空格隔开时

scanf("%d %d %d", &a, &b, &c);//3个%d之间是用空格隔开的,我们在每输入一个整数后必须输入一个分隔符,分隔符可以是空格、tab、回车

scanf的第一个参数中不要包含\n比如scanf(“%d\n”,&a); 这将导致scanf函数无法结束


5.类型转换

  自动类型转换

int a =10.6;  (double->int) 运行返回a=10

  强制类型转换

double a = (double)1 /2;

double b = (double)(1 /2);

// %两侧必须是整数

    int b = 10 % 2;

    //int b = 10.0% 2; 错误


6.   ++ a和a ++的区别(重点)

  • int a = 10;
  • a++;  ++a;   常量不能自增自减操作,无意义。 10++ 不允许 // 因为10++相当于10 = 10 + 1
  • int b = a++;(先赋值再自加,因此b=10,a=11)
  •  int b = ++a;(先自加,再赋值b=11,a=11)


 7. sizeof(C语言特有)

用来计算一个变量或者一个常量一种数据类型所占的内存字节数

  • sizeof(变量\常量 )
  • sizeof变量\常量
  • sizeof(数据类型 )
  • 不能是sizeof 数据类型

8. 关系运算符优先级

  •  关系运算符中==!=的优先级相等<<=>>=的优先级相等且前者的优先级于后者:2==3>1(优先级:先比较大小,再判断等或不等)优先级重点!!
  • 关系运算符的结合方向为“从左往右”: 4>3>2
  • 关系运算符的优先级小于算术运算符:3+4>8-2
int a = 5 != 4 + 2 * 7 > 3 == 10// 先算术,再关系,最后等或不等// 等价于 int a = ((5 != ((4 + 2 * 7) > 3)) == 10)

9. && 逻辑与 、|| 逻辑或

条件A&& 条件B”都真才真。遇假就假

  1. 总是先判断条件A是否成立
  2. 如果条件A成立,接着再判断条件B是否成立:如果条件B成立,“条件A && 条件B”的结果就为1,即“真”,如果条件B不成立,结果就为0,即“假”
  3. 如果条件A不成立就不会再去判断条件B是否成立(重点)因为条件A已经不成立了,不管条件B如何,“条件A && 条件B”的结果肯定是0,也就是“假”

例如:  int a=10; int b=10; intc=(a<5)&&(++b>=11)

返回值a=10;b=10;c=0  因为a<5不成立,所以条件B不作处理。

 

l  逻辑运算符的优先级顺序为: 小括号() >负号 - > ! > 算术运算符 > 关系运算符 > &&> ||

条件A|| 条件B”都假0才假0。遇真1就真1

逻辑非:注意点    !10返回值是0!!10返回值是1.


10. if条件语句

int a = -10;if (a > 1)printf("A\n");printf("B\n");return 0;
当if后面没有{}时,会默认紧跟的下一行printf("A\n");当成条件内容,而与再一行无关。所以printf("B\n");始终会执行。

int main(){   if (10 > 6)       int a = 5;    return 0;}

上面的代码是错误的。编译器是根据{}来识别a的作用域。上面的情况int a是作用在if里,但编译识别在main{}里。所以作用域不明确报错。

如果要在if后面的语句中定义新的变量,必须用大括号。否则定义作用域不明确,会报错


11. switch语句

  • switch(表达式) { case 数值1: break; … default: break;}
  • 简述break的作用:退出整个switch语句,若没有,则继续执行下一个case语句。
  • case中定义变量,必须用大括号,否则跟if情况类似,作用域不明确


12. while循环

while (条件)

{

   循环体

}

break: 直接结束整个while循环

continue:结束当前循环体,进入下一次循环体的执行。


  • 最简单的死循环 while(1);

  •  whiledo while循环对比区别
  • 1.很多情况下,whiledo while可以互换
  • 2.  while特点:如果一开始的条件不成立,永远不会执行循环体。
  •       do while特点:不管一开始的条件是否成立,至少会执行一次循环体。
int i=0;do{ i++;} while(i<0);


13. for循环

  •    最简单的死循环 for(;;);



  • while循环和for循环的比较
  • 可以互换
  • for循环的变量可以及时回收
  • for(int i=0;i<5;i++){循环体}
  • int i=0;  while(i<5){循环体;i++;}  while()小括号里只能放条件,不能初始化变量
  • 两者区别在于变量初始化的作用域不同。for循环变量作用域只在循环内部,可以及时回收。

 




1 0
原创粉丝点击