读书共享 Primer Plus C-part 5
第五章 运算符、表达式和语句
- 关于+- 的一元运算符和二元运算符的区别
a++:a先创建自身的一个副本,然后a自增1,最后返回副本的值
a+=1: 事实上相当于++a a=a+1: 虽然有点雷同于a+=1,但不同的是此时右值的a和1做相加操作,形成一个副本然后赋值给a,所以有额外操作 ++a:将a自增1并返回a 鉴于a++和++a的差别,C++Primer建议用++a作为for循环的递增量
2.关于除法四舍五入
#include<stdio.h> #include<string.h> int main() { int a = 3; int b = 4; int c = (int)(a/1.0/b+0.5); printf("%d \n",c); return 0; }
/1.0 在保持值不动的情况下。使得结果是浮点数,同时进行+0.5保持四舍五入效果。
3. 关于运算优先级
关于运算符的结合从右到左(暂时不清楚可能造成什么误解)
第六章 c控制语句:循环
1.何为真何为假
假只有一个0,其他全部是真。
#include<stdio.h> int main() { while(-1.01) { printf("this is true\n"); } }
2.关于昨天遗留问题--大字符串如何输入
#include<stdio.h> int main() { char ch = getchar(); while(ch != '\n') { putchar(ch); ch = getchar() ; } putchar(ch); return 0; }
读入字符串
#include<stdio.h> int main() { char ch = getchar(); char str[1024] = {0}; int i = 0; while(ch != '\n') { str[i++]=ch; // putchar(ch); ch = getchar() ; } str[i]=ch; putchar(ch); printf("*%s \n",str); return 0; }
第七章 C控制语句:分支和跳转
- ctype.h
isalpha() 是否是字幕 isalnum() 是否是数字或者数字
isdigit()是否是纯数字 isblank()空格
islower() isupper()大小写
tolower() toupper() 大小写互转-- 如果不是对应的小写不转最终输出的是全小写或者全大写
- switch的存在意义
1.代码简洁 2.速度快
第八章 字符串输入/输出确认
文件的读取跟显示
#include<stdio.h> int main() { char ch; FILE * fp; fp = fopen("./while.c","r"); if(NULL == fp) { printf(" open fail\n"); } while((ch=getc(fp))!= EOF) { putchar(ch); } fclose(fp); return 0; }