Извините. Эта проблема вызвана моей неосторожностью. Пожалуйста, проигнорируйте ее, спасибо.В C++ условный оператор не поддерживал указатель?
Я пытаюсь решить проблему сообщения на LintCode, Add Two Numbers.
Во-первых, я пробую эти коды: first_code, но я получил Runtime Error и сообщение об ошибке TERMSIG = 11.
Затем я меняю коды на них, second_code. К моему удивлению, это сработало.
Единственное отличие состоит в:
[Первая]
l1 = (l1) ? nullptr : l1->next;
l2 = (l2) ? nullptr : l2->next;
[Второй]
if(l1){
l1 = l1->next;
}
else{
l1=nullptr;
}
if(l2){
l2 = l2->next;
}
else{
l2=nullptr;
}
Так интересно ли указатель условной поддержки оператора или нет?
Стараюсь эти простые коды:
#include <iostream>
int main(){
int* a = nullptr;
int b = 0;
b = (a) ? 1 : 10;
std::cout << b << std::endl;
}
Он работал.
Но почему это не удалось решить проблему на LintCode. Я ничего не забыл?
В вашей второй строке 'l1 = (l2)? nullptr: l2-> next; 'вы хотели назначить' l2'? – CoryKramer
[Первый] по-прежнему не эквивалентен [Second]. [Первый] должен быть 'l1 = (l1)? l1-> next: nullptr; 'или' l1 = (! l1)? nullptr: l1-> next; ' – LogicStuff
Взгляните на [Тернарный условный оператор] (http://en.cppreference.com/w/cpp/language/operator_other#Conditional_operator). – LogicStuff