在 c++ 中,条件运算符不支持指针
In c++, conditional operator did not support pointer?
对不起。这个问题是我的粗心造成的。请忽略它,谢谢。
我尝试在 LintCode 上解决问题,添加两个数字.
起初,我尝试这些代码:first_code,但我得到运行时错误,错误消息 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 = (l1) ? nullptr : l1->next;
相当于
if (l1)
l1 = nullptr;
else
l1 = l1->next;
问题应该是显而易见的。
许多人宁愿完全跳过替代分支,
if (l1)
l1 = l1->next;
因为将nullptr
分配给空指针是不必要的(并且看起来像是其他意图)。
这两段代码做不同的事情。
第一个有两个错误。首先,您根本不分配 l2。其次,如果指针为 null,则取消引用指针。第二个版本没有这些错误。
您似乎对条件运算符的操作数顺序感到困惑。如果第一个操作数为真,则执行第二个操作数的表达式,如果第一个操作数为假,则执行第三个操作数。
所以我想知道条件运算符是否支持指针?
确实如此。您根本不能取消引用空指针。
相关文章:
- 为什么istream不支持右值提取
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- 如何在不使用指针的情况下将派生类的对象作为参数传递给基类中的函数?
- Casablanca/cpprestsdk listener.support接受函数,但不支持方法
- 在函数中返回无符号字符数组,但不返回指针
- 为什么C++不支持对未初始化变量进行智能分析?
- 在 c++ 中连接字符串和整数,以便在 C++ 11 不支持计算机的情况下读取多个文件
- 在 Ubuntu 18.04 上编译 GLSL 着色器时"不支持 GLSL 3.30"?
- 为什么联机C++ IDE 不支持"graphics.h"头文件?
- Clang编译器不支持aarch64-apple-darwin上的-fxray-instrument
- 为什么我的 clang 格式不支持 PPDirectiveIndentStyle 选项?
- 为什么某些 STL 容器(堆栈、队列、优先级队列)不支持迭代器?
- 为什么不支持 Xcode 1.5?
- 为什么C 模板功能不支持返回指针
- 在 c++ 中,条件运算符不支持指针
- 函数指针是否不支持C++中的实例类型
- 不支持在c或c++中添加两个指针.为什么?
- Cereal不支持原始指针
- 智能指针,当c++ 11不支持时,它不会转移所有权,也不会被共享
- C++:在回调中恢复对象指针(API 不支持user_data指针)