在C语言中if(!string)是什么意思

时间:2019-06-13 12:41:38

标签: c pointers operators negation

我正在尝试修改代码以适应自己的喜好。为此,我需要了解如果有人有任何想法,用C语言中的if(!String)是什么意思?

示例:

const char *String;
if (!String) {
   //do something
}

2 个答案:

答案 0 :(得分:0)

根据C标准(6.5.3.3一元算术运算符)

  

5逻辑求反运算符的结果!如果的值是0   其操作数的值等于0,如果其操作数的值等于1   比较等于0。结果的类型为int。表达式!E是   相当于(0 == E)。

和(6.3.2.3指针)

  

3整数常量表达式,其值为0,或者这样的整数   转换为void *类型的表达式称为空指针常量。   66)如果将空指针常量转换为指针类型,则   结果指针(称为空指针)可以保证进行比较   不等于指向任何对象或函数的指针。

这是if语句

if (!String) {
   //do something
}

如果指针String已初始化,则检查指针String是否等于空指针。

例如,该语句

if (!*String) {
   //do something
}

检查指针所指向的字符是否等于以空字符结尾的'\0'

如果在C程序中包含标准标头<iso646.h>,则可以用运算符!代替单词not

例如

#include <iso646.h>

//...

if ( not String ) {
   //do something
}

答案 1 :(得分:0)

这是写import SwiftUI enum SectionType: String, CaseIterable { case top = "Top" case best = "Best" } struct ContentView : View { @ObjectBinding var store = SelectionStore() var body: some View { SegmentedControl(selection: $store.selection) { ForEach(SectionType.allCases.identified(by: \.self)) { type in Text(type.rawValue).tag(type) } } } } 的简短方法。

通常我们改为写if(String == NULL)的缩写,if(String)。请注意,这不会检查它是否指向有效位置。这段代码可以编译,但是会(或可能)失败:

if(String != NULL)

在不再指向有效位置时尝试打印str是未定义的行为。该程序可能会打印“ Hello World!”,崩溃或其他信息。