crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

voipp
  опции профиля:
сообщение 26.3.2011, 0:53
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 116
Регистрация: 20.10.2009
Из: Msk
Пользователь №: 1166

Спасибо сказали: 0 раз(а)




Репутация:   0  


#include<iostream>
#include<string.h>

using namespace std;

int main(){
    char str1[8]="privet!";
    char str2[8],str3[10],str4[1];
    strcpy(str4,str1);
    printf("%s \n %d  %d",str4,strlen(str4),sizeof(str4));
    (!strcmp(str4,str1))&&(printf("!!!"));
    system("pause");
}


после выполнения этого кода, вот что вылезает на экран: privet!
7 1 нажмите на кнопку....
откуда такие чудеса?если заменить strcpy на strcpy_s, то в случае разных по длине строк, в результирующую строку запишется 0?

и еще вопрос не по теме: если написать строчку a && b && c && .... то как будет вычисляться это выражение если a,b,c,... имеют тип bool

Сообщение отредактировал voipp - 26.3.2011, 1:12
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 31.3.2011, 7:15
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


voipp, во первых, я запустил и проверил. Ожидаемо вывелось "7 1!!!"

тут выполнятся обе части, так как нет оператора if перед скобками - в этом случае компилятор рассматривает выражение так:
>>(!strcmp(str4,str1))&&(printf("!!!"));

1) считаем выражение strcmp(str4,str1) ->A
2) считаем выражение printf("!!!") ->B
3) выполняем бинарный оператор A&&B -> [результат оператора никуда не сохраняется, нигде не используется]

---------------------------------------

Если бы был if, то так:

>>if(!strcmp(str4,str1))&&(printf("!!!"));
1) считаем выражение strcmp(str4,str1)
2) если оно ненулевое - всё выражение под if ложно, далее не считаем.
3) иначе, считаем выражение printf("!!!")
4) если оно нулевое - всё выражение под if ложно

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 18.3.2025, 3:36