11.4 晚自习 对fgets函数和运算时对括号的纠正

发布于 19 天前  23 次阅读


关于fgets函数第二个括号的意义,我们知道,表示要读取的最大字符数(包括字符串结束符 \0

然而,还有两种情况,第一种是如果我们输入的内容长度小于 n-1最后一个字符要保留字符结束符\0),例如 n 为 100,用户输入的内容为 “Hello”然后回车,那么 fgets 将会将字符串 "Hello\n" 存储在缓冲区中,并在最后加上 \0,形成 "Hello\n\0"

第二种情况,舍命陪君子如果输入的字符串长度超过 n-1fgets 只会读取前 n-1 个字符,并在末尾添加 \0剩余的字符将保留在输入缓冲区中,可能会影响后续的输入操作(譬如很久之前的,对下面scanf函数输入的影响)

这里强调的是,fgets将不会保留换行符\n,因为它为了你,读取的字符数已达到上限

同时,我们也从中知道,fgets最后存储的字符一定是字符结束符\0


括号的优先级通常是最高的

int result = (2 + 3) * 4;

在这个例子中,括号内的 2 + 3 会首先被计算,结果为 5。然后,计算 5 * 4,最终 result 的值为 20

所以,编译器会进行“替换”这一重要操作,即计算括号内的运算,然后替换(这个操作可以不止一次),然后再从左到右进行运算

届ける言葉を今は育ててる
最后更新于 2024-11-04