一些杂记,还未整理。
比起printf() scanf()函数
gets_s和puts更加优雅和简洁
例子:
int main() {
char str[50]= "\0";
puts("请输入一个字符串:");
gets_s(str);
puts("您输入的字符串:");
puts(str);
return(0);
} 或者使用 使用fgets函数
优点: 从标准输入流中读取10字节(包括’\0’)到字符数组str中, 超出就自动截断, 不会出错。
char str[10];
fgets(str, 10, stdin);而且函数更加安全
如何想在vs中继续使用scanf函数且忽略安全检查的话 需要如下宏定义:
#define _CRT_SECURE_NO_DEPRECATE转义字符\后为8进制或16进制
转义字符以\或者\x开头,以\开头表示后跟八进制形式的编码值,以\x开头表示后跟十六进制形式的编码值。 对于转义字符来说,只能使用八进制或者十六进制。
https://blog.csdn.net/littesss/article/details/70148523
https://blog.csdn.net/qq_51646682/article/details/121111632?spm=1001.2014.3001.5501
https://blog.csdn.net/weixin_43689805/article/details/120468320
一些注意事项:
1、gets函数在vs2015后不被支持,可用gets_s替代
2、vs2022中,如果您直接将逗号运算符写入printf函数中那么它会默认输出变量的值
printf("%d",(a17 = 3 * 5, a17 * 4), a17 + 5);它会输出a17的值60而不是整个表达式的18
3、C认为所有非0数为真,0为假
4、逻辑运算符的短路
| 下表显示了 C 语言支持的所有关系逻辑运算符。假设变量 A 的值为 1,变量 B 的值为 0 | ||
|---|---|---|
| && | 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 | (A && B) 为假。 |
| || | 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 | (A || B) 为真。 |
| ! | 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 | !(A && B) 为真。 |
在 && 中如果左表达式为假,右侧表达式将不会被运算
在 || 中如果左表达式为真,右侧表达式将不会被运算
关于对逻辑与和或的理解:
“逻辑与”相当于“并且”,两个条件都同时成立的情况下“逻辑与”的运算结果才为“真”。
“逻辑或”相当于“或者”,一个条件成立的情况下“逻辑或”的运算结果为“真”,两个条件都为假的情况下“逻辑与”的运算结果才为“假”。
const关键字用于设置变量不可更改/只读的
c是面向过程的,怎么会有类的概念呢。
%d整型输出,%ld长整型输出,
%o以八进制数形式输出整数,
%x以十六进制数形式输出整数,或输出字符串的地址。
%u以十进制数输出unsigned型数据(无符号数)。注意:%d与%u有无符号的数值范围,也就是极限的值,不然数值打印出来会有误。
%c用来输出一个字符,
%s用来输出一个字符串,
%f用来输出实数,以小数形式输出,默认情况下保留小数点6位。
%.100f用来输出实数,保留小数点100位。
%e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。
一些回文数简单实例: