关于fgets函数第二个括号的意义,我们知道,表示要读取的最大字符数(包括字符串结束符 \0
)
然而,还有两种情况,第一种是如果我们输入的内容长度小于 n-1
(最后一个字符要保留字符结束符\0),例如 n
为 100,用户输入的内容为 “Hello”然后回车,那么 fgets
将会将字符串 "Hello\n"
存储在缓冲区中,并在最后加上 \0
,形成 "Hello\n\0"
第二种情况,舍命陪君子,如果输入的字符串长度超过 n-1
,fgets
只会读取前 n-1
个字符,并在末尾添加 \0
,剩余的字符将保留在输入缓冲区中,可能会影响后续的输入操作(譬如很久之前的,对下面scanf函数输入的影响)
这里强调的是,fgets将不会保留换行符\n,因为它为了你,读取的字符数已达到上限
同时,我们也从中知道,fgets最后存储的字符一定是字符结束符\0
括号的优先级通常是最高的
int result = (2 + 3) * 4;
在这个例子中,括号内的 2 + 3
会首先被计算,结果为 5
。然后,计算 5 * 4
,最终 result
的值为 20
所以,编译器会进行“替换”这一重要操作,即计算括号内的运算,然后替换(这个操作可以不止一次),然后再从左到右进行运算
Comments NOTHING