Что есть в C операторы: "?", " :"? Я в каком-то справочнике их видел, но не могу найти в каком. Просто GCC, и его производные нормально с ним работают, а Visual Studio собирает, но при запуске умирает на этом месте:
for (j=0; j<height;j++)
for (i=0; i<width; i++)
expanded_data[2*(i+j*width)]=expanded_data[2*(i+j*width)+1]=(i>=bitmap.width||j>=bitmap.rows)?0:bitmap.buffer[i+bitmap.width*j];
Сокращенная запись оператора if ... else ...
if (value) command1 else command2; Эквивалентно value ? command1 : command2
Близко, но неправильно.
Это аналог if...else для выражений.
В expr1?expr2:expr3 если expr1 - истина, то вычисляется и возвращается значение expr2, иначе - expr3. Эти expr'ы - просто выражения, но зато и вся конструкция является выражением, допуская, например, такую запись: a=func(b?c:d). С if'ом такое не прокатит.
А вообще, это описано в любом учебнике по C.
Близко, но неправильно.
Это аналог if...else для выражений.
В expr1?expr2:expr3 если expr1 - истина, то вычисляется и возвращается значение expr2, иначе - expr3. Эти expr'ы - просто выражения, но зато и вся конструкция является выражением, допуская, например, такую запись: a=func(b?c:d). С if'ом такое не прокатит.
А вообще, это описано в любом учебнике по C.
Да, это я и хотел сказать, спасибо, что поправили.