ошибка компиляции в операторах c

Я пытаюсь запустить этот код. Этот код работает успешно. Но когда я меняю переменные на постоянные числа, я получаю ошибку компиляции.

Мой код, который отлично работает:

 int a =5,b=6,c=7;
 int d;
 d = a,b,c;
 printf("%d",d);

когда я запускаю код, его вывод равен 5. но когда я запускаю этот сегмент кода:

 d = 2,6,7;
 printf("%d",d);

я получаю ошибку компиляции. Я пробовал и на другом компиляторе. Но ошибка все равно есть. Что я делаю неправильно.


person Dalvik    schedule 06.02.2015    source источник
comment
int d; d = 2,6,7; -- как вы думаете, что этот фрагмент кода должен делать?   -  person DevSolar    schedule 06.02.2015
comment
я думаю, что назначу 2 для d, поскольку c обработает это как очередь   -  person Dalvik    schedule 06.02.2015
comment
Прочтите об операторе запятая и избегайте использования Turbo C   -  person Spikatrix    schedule 06.02.2015
comment
проверьте грамматику: stackoverflow.com/a/17383834/1673391   -  person Grijesh Chauhan    schedule 06.02.2015
comment
Какую точно ошибку компилятора вы получаете?   -  person abelenky    schedule 06.02.2015
comment
но когда я использую a, b, c, он работает   -  person Dalvik    schedule 06.02.2015
comment
У меня работает: ideone.com/bVlqPi   -  person abelenky    schedule 06.02.2015
comment
Мой компилятор позволяет d = 2,6,7.   -  person emlai    schedule 06.02.2015
comment
@UnicoRahul: Было бы полезно, если бы вы опубликовали сообщение об ошибке компилятора...   -  person DevSolar    schedule 06.02.2015
comment
@UnicoRahul ясно, что оператор запятой делает вещи, которые совершенно не связаны с тем, что вы думаете, что он делает. c обрабатывать это как очередь совершенно бессмысленно, не знаю, откуда у вас сложилось такое впечатление. Просто загляните в книги и узнайте, что именно делает запятая в C.   -  person Mike Nakis    schedule 06.02.2015
comment
Кроме того, вы не можете приходить в StackOverflow и говорить такие вещи, как я получаю ошибку компиляции. Вы должны точно указать, какую ошибку компиляции вы получите и в какой именно строке вы ее получите.   -  person Mike Nakis    schedule 06.02.2015
comment
Является ли ошибка ошибкой: ожидаемый идентификатор или '(' перед числовой константой?   -  person Spikatrix    schedule 06.02.2015


Ответы (1)


Ваш первый код использует переменные и присваивание d = a и b и c просто как выражение, поэтому запустите код:

int main(int argc, char const *argv[])
{
 int a =5,b=5,c=7;
 int d;
 d = a,b,c+1;
 printf("%d",d);
 return 0;
}

Вы получаете только что оцененные 5, b и c+1 и помещаете их туда бесполезно. Но если вы запустите этот код, который включает выражение с запятой:

int main(int argc, char const *argv[])
{
 int a =5,b=5,c=7;
 int d;
 d = (a,b,c+1);
 printf("%d",d);
 return 0;
}

Вы получаете 8 в качестве последнего выраженного выражения. Вы можете использовать числовую игру как выражение с ():

int main(int argc, char const *argv[])
{
 int a =5,b=5,c=7;
 int d;
 d = (0,3,1);
 printf("%d",d);
 return 0;
}

получить последнее число или оцененные данные.

У меня работает код ниже:

int main(int argc, char const *argv[])
{
 int a =5,b=5,c=7;
 int d;
 d = 0,3+1,1-1;
 printf("%d",d);
 return 0;
}

он выводит 0, но если вы не используете (), это бессмысленно, почему бы просто не использовать d = 0;

person lqhcpsgbl    schedule 06.02.2015