内存寻址由大到小,优先分配内存地址比较大的字节给变量;变量越先定义,内存地址就越大;取得变量的地址:&变量名;输出地址:%p;一个变量一定先进行初始化,才能使用。
scanf函数只接受变量的地址,scanf函数是一个阻塞式的函数,等待用户输入,用户输入完毕后,就会将用户输入的值赋值给对应的变量。
一次性输入多个数值,并且以某些符号隔开,输入时要使用同样的符号隔开;如果scanf参数中以空格隔开,实际输入可以以空格、tab、回车作为分隔符。scanf中不能写\n。
取余运算(模运算):%两边都是整数,%取余结果的正负性只跟%左边的数值有关。
// 自动类型转换(double->int) int a = 10.8; // 自动类型提升(int->double) double c = 10.6 + 6; // 强制类型转换(double->int) int b = (int) 10.5;
// 复合赋值运算符 a += 5; // a = a + 5; a += 5 + 6 + 4; // a = a + (5 + 6 + 4);
a++的值是a自增之前a的值,++a的值是a自增之后a的值,a--,--a同理。
//int size = sizeof(10); //int size = sizeof 10.9; int a = 10; //int size = sizeof(a); //int size = sizeof a; int size = sizeof(char); // int size = sizeof char; // 错误的
在关系运算中,条件成立就返回1,真;条件不成立就返回0,假。
逻辑与 条件1 && 条件2
逻辑或 条件1 || 条件2
逻辑非 !条件:如果条件成立,就返回0;如果条件不成立,就返回1。
三目运算符 条件 ? 数值1 : 数值2
比较大小时,常量值放左边,变量放右边。
注意赋值运算符,不要写成两个等号。
if语句后面不要写分号。
// 下面的代码是错误的:作用域不明确 if (10 > 6) int a = 5; // 如果要在if后面的语句中定义新的变量,必须用大括号{}
break:退出整个switch语句,如果case后面没有break,就会执行后面所有case中的语句,直到遇到break为止。
如果要在case后面定义新的变量,必须用大括号{}包住。
if和switch:
1. if语句能完成的功能,switch并不一定能完成。
2. 在有些情况下,if语句和switch语句可以互换。
3. switch能完成的功能,if语句都能完成。
时间: 2024-11-13 04:24:26