2014-02-04 4 views
2

Преобразование C# Паскаля я наткнуться на этой линии:Чтение C#, если заявление

if (bb[1] == '1'-'0') 

Что это значит? Если второй байт равен строке '1' минус строка '0'?

+1

'Преобразование C# в Pascal' - вы не можете этого сделать. –

ответ

3

'1'-'0' это даст вам 1 как целочисленное значение. Это похоже на преобразование символа в соответствующее целое число.

Это так же, как:

int value = (int)Char.GetNumericValue('1'); 

где value проведет 1

так что ваш чек:

if(bb[1] == 1) 
+2

Не знаю о Char.GetNumericValue –

+0

Если я не ошибаюсь, если (bb [1]) будет достаточно. – wittrup

+0

@wittrup, no, если 'bb' не имеет массив булевых типов, который, я думаю, не является. в C# вы не можете использовать 'if (1)' as 'true' – Habib

0

C# не одинарные кавычки строки, так что те оба символа (тип char).

Значения типа char представлены в памяти как целочисленное значение их кода ASCII, поэтому на них работают ограниченные математические операции (например, вычитание в вашем примере).

'1' - '0' такой же, как (int)'1' - (int)'0' который является 49 - 48.

0

watch window in visual studio

'1' преобразуется в десятичную, что соответствует 49 '0' в качестве десятичного дает 48. 49 - 48 = 1. Таким образом, '1' - '0' 1, как показано в часах окно. Here's Набор символов ASCII, если у вас есть другие аналогичные сравнения.

+0

Да. Я понял, я не считал достаточно простым из-за того, что заявление полностью затормозилось. Но так происходит, когда вы читаете другие, пытаясь написать свое собственное подобное приложение на языке, который вы уже знаете. – wittrup

Смежные вопросы