格式化输入输出:
printf("hello world!");printf("期望薪资:%d\n",salary); //%站位符格式化传分为两种: 1.普通字符,原样输出 2.转换说明:从%开始,%-0m.nl|h+转换说明 % 站位符,转换说明的开始,不能省略 - 左对齐,缺省是右对齐 0 可以是任意字符,表示空位补零 m.n 控制域宽只对应的输出内容在输出设备上所站的位数 n 表示精度,用于输出浮点数,小数点后面的位数 l或者h l 表示整数long %ld 浮点数double %lf h 表示short %hd 将int格式修正成short转换说明符:
i/d 输出十进制整数在printf函数中一样使用 o 输出无符号的八进制整数 x 输出一个十六进制 u 输出无符号十进制c 输出一个字符
s 输出一个字符串 f 输出浮点 只包含float e 以科学计数法输出一个浮点数 g 不输出无意义的0,在f和e之间选一个最短的输出 p 输出内存当中的地址 一个32位的整数ps:格式字符串里面的转换说明要和后面的表达式--对应
格式化输入:scanf(); stdio.h中的函数
scanf("格式字符串",地址列表); scanf("%f,%f,%f",&f1,&f2,&f3); //可变长参数 段错误:程序段,数据段,bss段,堆和栈 scanf 访问了非法的地址 scanf 空白 回车 制表符 统统忽略 %d scanf 1、 在寻找数据的时候,会跳过空白字符 2、 当遇到不属于格式转换的字符时,会把这个字符放回原处。 3、 最后一个回车scanf并不会读取; 4、 用户输入的内容放在输入缓冲区中 * scanf("%*c");从缓冲区忽略一个字符 scanf("%*[^\n]");scanf("%*c") //作用清除 缓冲区 清除所有^\n的字符 scanf("%c",&c); //只写转换说明 set cindent 以c文件缩进 set smartindent 智能缩进 ab stdio vi .vimrc 在这里添加set cindent set smartindent ab stdio #include <stdio.h> //把后边的字符串简写成前面这种 2、sizeof(); 只检查类型在内存中占得字节数 类型名sizeof(int); 变量名 int i;sizeof(i); 表达式 sizeof(5.0);sizeof(5.0f); sizeof()不会对表达式进行计算 详细,把所有的知识的来源,所有的过程都要弄明白算数运算符: + - * / % (取余,求摸) a+b a-b a*b a/b a%b 1、求摸操作必须为整数。 2、0不能作除数 也不能对0进行取余运算 3、两个整数相除,取结果的整数部分 4、c89 中对负数的操作没有具体规定, -9/7 为 -1huozhe -2 可以向上取等,具体根据编译器的实现。 c99 结果向0靠近练习:逆序打印一个两位数 91 1980 08
赋值运算符= 左值 和 右值(右值可为表达式) C语言中唯一一个可以作为左值的就是 变量。 int a=10; i=k=j=0;也合法 5=8 不合法 -i=k 自增 和 自减运算符 ++ -- 前++: ++i 后++:i++ 前--: --i 后--:i-- ++i i=i+1 i+=1关系运算符:
< <= > >= 10<11:逻辑结果 成立(真1) 不成立(假 0) 判断一个数是正数还是负数 i=10,0<i<100 在计算机中恒为真,这中表达式是错误的。 0<i:逻辑结果成立为1,1<100恒成立。 必须改成 i>0 && i<10; 判等运算符 == 等于 != 不等于逻辑运算符: && 逻辑与 短路与 || 逻辑或 短路或 ! 逻辑非 结果: 真或假 1或0 表达式1 && 表达式2如果表达式中有逻辑运算,那么运算顺序是从左往右运算
才有了短路概念 如果表达式1为假,则表达式2不做运算 多买几本数,同种类型相比较着学2.表达式1 || 表达式2 如果表达式1位真,则表达式2不做运算, 整个表达式的结果就为真3三目运算符: 条件?表达式1:表达式2 如果条件表达式为真,则运行表达式1,否则运行表达式2.5.优先级与结合性
作为通用规则,C语言允许在所有表达式中用圆括号进行分组 由实现定义中:所谓的实现: 实现:程序在特定的平台上编译、链接和执行所需要的软件。4.地址运算符 &取地址 *根据地址取变量 printf中的%p用来输出地址。 取地址取得是一个变量的开始地址。 地址是按字节编号的。(如汇编当中十六进制按字节编号)