Будет ли ab (= 100) компилироваться в C #? - PullRequest
1 голос
/ 16 февраля 2011
using system;

class Program
{
public static void main()
 {
  int a = 200,b;
  a-(b=100);
 }
}

Выдает ли вышеуказанная программа ошибку?Если так, то почему?Я не нахожусь в среде, где я могу выполнить код.

Ответы [ 6 ]

5 голосов
/ 16 февраля 2011

Вы можете проверить даже без (локального) компилятора:

http://ideone.com/m3qJ2

prog.cs (8,4): ошибка CS0201: в качестве оператора могут использоваться только выражения присваивания, вызова, приращения, декремента и новых выражений объектов. Ошибка компиляции: 1 ошибка (-ов), 0 предупреждений

Вот наиболее близкий результат, который я получилдля компиляции вашего кода - http://ideone.com/FPZJq:

using System;

class Program
{
public static void Main()
 {
  int a = 200,b;
  int c = a-(b=100);
 }
}

Ошибки:

  • a-(b=100) не является допустимым оператором в C #.Многие языки допускают такие пустые операторы (например, 2;), но не этот.
  • using system; должен быть записан как using System;
  • main должен быть написан как Main

Чтобы ответить на ваш вопрос: ваш код не выдает ошибку runtime - он даже недействителен.Это, однако, дает несколько ошибок компиляции .

2 голосов
/ 16 февраля 2011

Это выдает ошибку компилятора во второй строке метода, поскольку у вас есть выражение, которое вы пытаетесь использовать в качестве оператора:

Только присваивание, вызов, приращение, уменьшение и новоеВыражения объекта могут использоваться как оператор.

Если вы присваиваете значение выражения переменной, оно компилирует:

a = a - (b = 100);
2 голосов
/ 16 февраля 2011

Не компилируется.a-(b=100); не является допустимым оператором, поскольку:

"В качестве оператора могут использоваться только выражения присваивания, вызова, приращения, уменьшения и новых объектов"

2 голосов
/ 16 февраля 2011

Выражение a - (b = 100) не является допустимым оператором и, следовательно, код не будет компилироваться.

1 голос
/ 16 февраля 2011

a- (b = 100)

Это скомпилирует и работает без ошибок в C и C ++, просто попробовал.

Я идуЯ не могу сказать об этом точно, но, поверьте мне, в C, C ++ НЕТ ОШИБКИ ИЛИ ПРЕДУПРЕЖДЕНИЯ, просто компилируется и работает отлично.

0 голосов
/ 16 февраля 2011

Я думаю, что по крайней мере это даст ошибку: переменная b не определена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...