2016-03-10 3 views
0

Я грейдер для класса C++. Мои навыки в более продвинутых концепциях довольно недостаточны в целом из-за отсутствия практики, поэтому я не знаком с внутренними и внешними языками. Мой вопрос касается блока кода с необычной строкой в ​​задании о кубиках.C++ логические операторы

#include <iostream> 

using namespace std; 

int main() 
{ 
    int numSims = numSims % 12 == 0 || numSims > 1000; 
    //Other irrelevant code follows 
} 

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

+3

Высказывание утверждения «не может выполнить» неточно, но код определенно является ошибкой. – juanchopanza

+1

не секрет, его мусор. возможно, они означают 'bool stop = numsims ...' – pm100

+1

Это, вероятно, студент, пытающийся быть умным, но не принимая во внимание разборчивость и согласованность в том, что весь оператор либо вернет 1, либо 0 (true или false). Тот факт, что он рекурсивный, также означает, что он приводит к неопределенному поведению. Время дать вашему ученику несколько марок! – Poriferous

ответ

-1

Это будет выполняться, но с неинициализированным значением numSims, когда вычисляется выражение справа. В конце numSims будет в конечном итоге либо 0 или 1.

Редактировать

Принимая во внимание всю дискуссию в комментариях ниже, это технически Неопределенное поведение, которое может привести к программе сбой на некоторые аппаратные платформы. (Также возможно, но маловероятно, чтобы он загорелся фазорами или изменил полярность потока нейтронов - в зависимости от вашей аппаратной платформы.)

Во многих системах, используемых сегодня, программа будет работать и это неопределенное поведение (который возникает из-за попытки использовать неопределенное значение , хранящееся в неинициализированной переменной numSims) приведет к тому, что numSims заканчивается либо 0, либо 1.

+2

Первый бит прав, но код имеет неопределенное поведение. – juanchopanza

+1

@ unanchopanza не определено, но оно также будет в конечном итоге как либо 0, либо 1. Что не определено, так это вероятность того, что результат будет либо 0, либо 1. –

+2

@J ... Я думаю, t понять, что означает неопределенное поведение. Это означает, что вы ничего не можете сказать о результатах запуска программы. Может произойти все, что угодно. – juanchopanza

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