正数:原码、补码、反码相同
内存中存储补码,打印显示原码,反码为转换过程中的一个状态
只要是整数,内存中存储的都是二进制的补码
EOF----enf of file-----文件结束标志(值是-1)
!=用于测试“不相等”,==用于测试“相等”
&&(逻辑与):当符号两边数字均为真时,输出结果为真,即为1;反之则为0
||(逻辑或):当符号两边数字有一个为真时,输出结果为真:反之则为0
#include<stido.h> int main() { int a = 0; int b = 0; scanf_s("%d", &a); scanf_s("%d", &b); int max = (a > b ? a : b); printf("Max is %d\n", max); return 0; }
exp1?exp2:exp3 :意思是若exp1条件成立,则执行exp2;反之执行exp3
register int a = 0;(变量a要大量使用,将a储存在寄存器中以提高运行速率,即把a定义成寄存器变量)
unsigned---表示数字无符号位,即表示无论如何,该数字都为正数
typedef : 将类型变量重命名
static:将变量变为静态的变量,即表示变量发生变化后将会保留发生的变化;
且static修饰的局部变量生命周期变长,程序结束后变量值不会销毁,仍被保留;
static修饰的全局变量作用域发生改变,只能作用于自己所在的源文件内部使用,无法使用extern(声明外部符号的)跨文件调用;
static修饰的函数发生的变化与static修饰的全局变量相似,改变了函数的链接属性,将其原本的外部链接属性变为了内部链接属性;
void test() { int a=0; a++; printf("a=%d\n",a); } int main() { int i = 0; while(i<5) { test(); i++; } return 0; }
宏的定义:#define MAX(X,Y) (X>Y?X:Y)
指针变量:用来存放地址的变量,类型为XXX*,存放什么样类型的变量,XXX就是对应的类型,而使用时需在指针变量前加上解引用操作符*【指针在32位平台是4个字节,在64位平台是8个字节】
(在VS操作栏上找到Debug,点击配置管理器,可以改变平台位数)
如:int a = 10; int* p = &a(这里的p即为指针变量); *p = 20; printf("a=%d\n",a);
输出结果会变为20,这里的*p意思是找到存放的a并改变a的值
数学上18=18 &&(并且)a
if() .....; else if() ....; else if() .....; else
if/else语句控制多条语句时需要使用{}将代码括起来,形成代码块
悬空else :与最近的未匹配的if匹配
建议:常量与变量比较时,将常量放置在左边更优
switch分支语句:switch无法真正实现分支,需搭配break使用才可实现真正的分支(在最后一个case语句后加上break语句,可避免出现在以前的最后一个case 语句忘记加上break语句;在最后加上default语句,防止程序输入错误的情况遗漏;default 可出现在任何位置,不影响语句本身使用)
switch语句允许嵌套使用
switch(整型表达式)
{
case 整型常量表达式 : case( ):
(代码) case( ):
break; case( ):
case 整型常量表达式 : (代码);
(代码) break;
break; case( ):
default:
(除case以外的所有情况)
} (代码);
break语句是跳出代码块到结尾;continue语句是回到代码块开头,continue后的代码便不再执行
int ch = getchar(); putchar(ch);
一个输入,类似于scanf(),但获取的是字符的Asc||值;一个输出,类似于printf(),输出Asc||值对应的字符
通过输入函数输入数据后,数据会存放在输入缓冲区,直到输出或存放到其他位置(如:字符,变量)