#include <stdio.h>
int main() {
int n, a, b, c;
char str[100];
FILE *fp = fopen("./null", "w");
// scanf("%d", &n);
while(~scanf("%d", &n)) {
printf(" has %d digits\n", printf("%d", n));
printf("%d\n", sprintf(str, "%d", n));
printf("%s\n", str);
printf("%d\n", fprintf(fp, "%d", n));
}
fclose(fp);
return 0;
}
// int main() {
// char str[100] ={"192.168.0.1"};
// FILE *fp = fopen("./output", "w");//直接覆写
// //FILE *fp = fopen("./output", "a+");//文件后面追加
// fprintf(fp, "str = %s", str);
// fclose(fp);
// return 0;
// }
0^a = a;
a^a = 0;
使用逻辑与或或,两边都需要明确的逻辑运算结果,可以加个括号解决。
分段函数可以用函数指针实现。
辗转相除,本轮的小值会转变成下一轮的大值。本轮的模除的结果变成下一轮的小值。
结束边界是小值等于0,即能被整除。
变参函数
va_list定义一个参数列表
va_start定位参数列表,即初始化参数列表。
va_arg逐一拿到参数列表里面的内容
释放参数列表
用打表的方式加速日期判断。
%g可以控制不输出多余无关的0
用a-b替代a!=b,能防呆防止写错了。
语言的短路机制,效率比条件判断高。
随机种子,srand(time(0))
尽量减少只用分支判断的语句。可以加快运行速度,原因是不会打断cpu流水并行效率。
__builtin_系列的优化指令
!!(x)归一化操作
if可以接2种情景。
1,单语句(分号结束的语句)
2,复合语句(多条单语句),需要用大括号包起来。
注意逗号表达式不是复合语句。
左值和右值
优先级可以用小括号强调优先级
t ^= d
d ^= t
t ^= d
https://en.cppreference.com
https://zh.cppreference.com
inttype.h
PRIdx本质上是个宏,可以用%s打印出来看具体的数值。
printf中的第一个参数,可以用多个字符串连接起来。
^是异或运算,效果是找到跟这个字符不同的字符。原因遇到所有位都一样的话,计算结果是0,只要有一位不相同,那结果就非零。
Scanf是流式读取,每次缓存区还有数据/n 导致scanf 不断被中断调起,但里面的正则没去读buff所以下一次又被触发。
而加上getchar后,读取了这个buff,那么下次就不会触发scanf了。
...是可变参数列表,用于实现变参函数。
#include <iostream>
uisng namespace std;
int main() {
int a;
int b;
int c;
cin >> a >> b >> c;
cout << a << b << c;
cout << endl;
cout << endl;
return 0;
}