【发布时间】:2019-12-29 11:25:51
【问题描述】:
当使用带有一个变量的 a 时,我们将它声明为 0,因为 i=0 就像这里一样
但是当我们使用两个变量时,就像我添加 n = strlen 以使代码更高效时,不声明 i=0 而是使用逗号并声明 n=strlen(s)。为什么我们不能使用 'i=0;'就像在前面的代码中所做的那样?
编辑:cs50.h 是沙盒 cs50 的一部分,由哈佛制造。
#include <stdio.h>
#include <string.h>
int main(void)
{
string s = get_string("Input: ");
printf("Output: ");
for (int i = 0; i < strlen(s); i++)
{
printf("%c\n", s[i]);
}
}
#include <cs50.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
string s = get_string("Input: ");
printf("Output:\n");
for (int i = 0, n = strlen(s); i < n; i++)
{
printf("%c\n", s[i]);
}
}
【问题讨论】:
-
您可以声明多个变量。这里的两个代码示例都很好。
-
不,用逗号它仍然是一个声明。
int i = 0, n = strlen(s);和int i = 0;都声明了一个变量i并将其初始化为0。 -
@animesh 确实没有任何理由认为您的首选版本“更高效”。对你来说,它看起来像是更有效地利用空间,但很难猜测,尤其是在没有很多经验的情况下,编译器会把它变成什么。最好避免养成这种想法的习惯,因为代码首先应该是人类可读的。
-
@KamilCuk 所以我可以用逗号分隔多个变量,但最后一个变量必须用分号?
-
因为
;分隔了for循环的3个子句,所以不能在声明之间使用。