黑马程序员——C语言基础 scanf函数 基本运算 三目运算符
(一下内容是对黑马苹果入学视频的个人知识点总结)
(一)scanf函数
1> 简单介绍一下scanf函数 这是在stdio.h中声明的一个函数,因此使用前必须加入#include <stdio.h>。调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量
2>scanf函数用法
1)简单的用法
1 #include <stdio.h> 2 3 int main() 4 { 5 // 定义一个变量,用来保存用户输入的整数 6 int number; 7 8 // scanf函数只接受变量的地址 9 // scanf函数是一个阻塞式的函数,等待用户输入 10 // 用户输入完毕后,就会将用户输入的值赋值给number变量 11 // 函数调用完毕 12 scanf("%d", &number); 13 14 printf("用户输入的值是%d\n", number); 15 16 return 0; 17 }
① scanf函数时,会等待用户的键盘输入,并不会往后执行代码。scanf的参数是"%d",说明要求用户以10进制的形式输入一个整数。这里要注意,scanf的第2个参数传递的不是变量,而是变量的地址,&是C语言中的一个地址运算符,可以用来获取变量的地址
② 输入完毕后,敲一下回车键,目的是告诉scanf函数我们已经输入完毕了,scanf函数会将输入的值赋值给变量
2)其他用法
一次性输入多个数值,并且以某些符号隔开例如一下一段程序
1 int num1, num2; 2 scanf("%d#%d", &num1, &num2);
但是需要注意不可以用换行 \n 隔开 ,另外输入的时候也要和中间隔开的符号隔开
(二)基本运算
1)算术运算
1> 加法运算+
除开能做加法运算,还能表示正号:+5、+90
2>减法运算-
除开能做减法运算,还能表示符号:-10、-29
3> 乘法运算*
注意符号,不是x,而是*
4> 除法运算/
① 注意符号,不是÷,也不是\,而是/
② 整数除于整数,还是整数。1/2的值是0,这个并不是二分之一
5> 取余运算%
① 两个整数相除之后的余数
② %两侧只能是整数
③正负性取决于%左侧的数值
2)注意点
1>自动类型转换
自动将大类型转换为了小类型,会丢失精度
2>自动类型提升
1 int b = 10.5 + 10;
将右边的10提升为了double类型
3> 强制类型转换
4> 运算顺序
有不同的优先级 不同的结合性
1 #include <stdio.h> 2 int main() 3 { 4 /*1.算数运算符的基本使用 5 int a = 10 + 1 + 2 - 3 + 5; 6 7 int b = -10; 8 9 int c = 10 * b; 10 11 int d = 10 / 2; 12 13 // 取余运算(模运算) 14 // %两边都是整数 15 // %取余结果的正负性只跟%左边的数值有关 16 int e = 10 % -3; 17 printf("%d\n", e); 18 */ 19 20 /* 21 // 自动类型转换(double->int) 22 int a = 10.8; 23 24 // 强制类型转换(double->int) 25 int b = (int) 10.5; 26 printf("%d\n", a); 27 */ 28 29 // 自动类型提升(int->double) 30 double c = 10.6 + 6; 31 32 double d = 1 / 3; 33 34 double e = (double)3/2; 35 36 printf("e的值是%f\n", e); 37 38 39 return 0; 40 }
(三)赋值运算
赋值运算比较简单 分为简单赋值与复合赋值
(四)自增自减
++自增运算符 ——自减运算符 注意一下++a和a++的区别(前面加完后运算后面的运算完再加)
(四)sizeof
1> 用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。
2>sizeof的基本形式
①sizeof( 变量\常量 )
②sizeof(数据类型)
#include <stdio.h> int main() { int a = 10; int size = sizeof(char); printf("size=%d\n", size); return 0; }
(五)关系运算
其实就是判断真假 如果是真这为1否则为0.关系运算符有很多他们的优先级是不同的,关系运算符中==、!=的优先级相等,<、<=、>、>=的优先级相等,且前者的优先级低于后者。
(六)逻辑运算
1)逻辑与
运算结果
只有当条件A和条件B都成立时,结果才为1,也就是“真”;其余情况的结果都为0,也就是“假”。因此,条件A或条件B只要有一个不成立,结果都为0,也就是“假”
3> 运算过程
总是先判断条件A是否成立,如果条件A成立,接着再判断条件B是否成立:如果条件B成立,“条件A && 条件B”的结果就为1,即“真”,如果条件B不成立,结果就为0,即“假”,如果条件A不成立,就不会再去判断条件B是否成立:因为条件A已经不成立了,不管条件B如何,“条件A && 条件B”的结果肯定是0,也就是“假”
2)逻辑或
1>使用格式
“条件A || 条件B”
2> 运算结果
当条件A或条件B只要有一个成立时(也包括条件A和条件B都成立),结果就为1,也就是“真”;只有当条件A和条件B都不成立时,结果才为0,也就是“假”。
3> 运算过程
总是先判断条件A是否成立,如果条件A成立,就不会再去判断条件B是否成立:因为条件A已经成立了,不管条件B如何,“条件A || 条件B”的结果肯定是1,也就是“真”.如果条件A不成立,接着再判断条件B是否成立:如果条件B成立,“条件A || 条件B”的结果就为1,即“真”,如果条件B不成立,结果就为0,即“假”
3)逻辑非
(七)三目运算符
三目运算符 条件 ? 数值1 : 数值2
1 int a = !100 ? 9 : 89;