C 手记

一些杂记,还未整理。

比起printf() scanf()函数

gets_s和puts更加优雅和简洁

例子:

c
int main() {

	char str[50]= "\0";

	puts("请输入一个字符串:");
	gets_s(str);
	
	puts("您输入的字符串:");
	puts(str);

	return(0);
} 

或者使用 使用fgets函数

优点: 从标准输入流中读取10字节(包括’\0’)到字符数组str中, 超出就自动截断, 不会出错。

c
char str[10];
fgets(str, 10, stdin);

而且函数更加安全

如何想在vs中继续使用scanf函数且忽略安全检查的话 需要如下宏定义:

c
#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函数中那么它会默认输出变量的值

c
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格式,且不输出无意义的零。

一些回文数简单实例:

https://img.vs2.top/old/ep.cpp