在C语言中,有很多地方用到逗号运算符,如,数组元素赋值、枚举声明、单行多变量声明中都运用到。但是,其执行的效果可能有些不同,在数组元素赋值中,在最后一个元素的末尾加上一个逗号,如:
char *atd[6] = {"hello world",
"hi",
"nice "
" to",
"meet",
"you",};
在上述程序中,在atd[2]和atd[3]之间,没有加上逗号,其效果为atd[2] = “nice to”,atd[3] = “meet”,而在最后面的字符串后面的’,’,一般情况都不会写上,但是在其他由逗号分隔的列表中,其效果截然不同,
如:
#include<stdio.h>
void generate_initializer(char *string)
{
static char separator = ' ';
printf("%c %s\n",separator,string);
separator = ',';
}
int main()
{
char *str = "you are right";
char *str1 = "abc";
char *str2 = "def";
generate_initializer(str);
generate_initializer(str1);
generate_initializer(str2);
return 0;
}
在上述代码中,第一次调用时,函数首先打印一个空个,然后打印一个初始化字符串,当函数再次调用执行时,首先会在初始化字符串的前面加上一个逗号。像这样的程序,其后面的逗号将会抑制正确的行为,使得代码的可读性变差,所以我们在使用时,应该更加重视。
其结果为: