справка синтаксиса C - очень простой

Если мы имеем

char *val = someString;

и затем скажите

if(val){
    ....
}

что if оператор, на самом деле проверяющий здесь?

7
задан mac 27 December 2011 в 16:53
поделиться

10 ответов

Ваш оператор if эквивалентен:

if (val != NULL) { ...

FAQ comp.lang.c содержит этот вопрос и ответ , в котором более подробно объясняется, почему это так.

5
ответ дан 6 December 2019 в 15:20
поделиться

Это проверка, содержит ли val указатель NULL. Если бы вы сказали

char * val = NULL;

if ( val ) {
  ...
}

, тест не прошел бы.

1
ответ дан 6 December 2019 в 15:20
поделиться

Как уже было сказано другими, проверяется, не является ли указатель char NULL. Если вы хотите проверить, не пуста ли строка, попробуйте strlen.

1
ответ дан 6 December 2019 в 15:20
поделиться

val - указатель, это утверждение равно if(val !=0), в то время как 0 также определяется как NULL, поэтому будет проверено, указывает ли указатель на NULL адрес, имейте в виду, что NULL указатель строки не то же самое, что пустая строка

0
ответ дан 6 December 2019 в 15:20
поделиться

Выполняется проверка if (val! = 0) . В C все ненулевые значения истинны, ноль - ложь.

2
ответ дан 6 December 2019 в 15:20
поделиться

независимо от того, является ли val нулевым указателем или нет.

1
ответ дан 6 December 2019 в 15:20
поделиться

val - указатель на символ. Это может быть установлено на любой адрес - действительный или недействительный -. Оператор if просто проверяет, не является ли val ненулевым:

if (val)

эквивалентно

if (NULL! = Val)

эквивалентно

if ((void *) 0! = Val)

Тем не менее, указатель может указывать на недопустимое место, например на память, которая не находится в адресном пространстве вашего приложения. Поэтому очень важно инициализировать указатели до 0, иначе они будут указывать на неопределенные местоположения. В худшем случае это местоположение может быть действительным , и вы не заметите ошибки.

2
ответ дан 6 December 2019 в 15:20
поделиться

Оператор проверяет, не является ли val , которое то же самое, что someString , не NULL . Обычно if (v) является сокращением для if (v! = 0) .

1
ответ дан 6 December 2019 в 15:20
поделиться

Просто проверяется, является ли значение NULL или нет.

1
ответ дан 6 December 2019 в 15:20
поделиться

Вышеупомянутое условие if проверяет, указывает ли указатель на ненулевую строку. Если этот указатель указывает на любую ненулевую строку, тогда условие будет быть правдой или ложью.

0
ответ дан 6 December 2019 в 15:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: