![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
voipp |
![]()
Сообщение
#1
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 116 Регистрация: 20.10.2009 Из: Msk Пользователь №: 1166 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
после выполнения этого кода, вот что вылезает на экран: privet! 7 1 нажмите на кнопку.... откуда такие чудеса?если заменить strcpy на strcpy_s, то в случае разных по длине строк, в результирующую строку запишется 0? и еще вопрос не по теме: если написать строчку a && b && c && .... то как будет вычисляться это выражение если a,b,c,... имеют тип bool Сообщение отредактировал voipp - 26.3.2011, 1:12 |
|
|
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Цитата (!strcmp(str4,str1))&&(printf("!!!")); это строчка эквивалентна следующему:
выводится Цитата privet! 7 1!!!Для продолжения нажмите любую клавишу . . . а вот если написать
где выражение a==false , то выражения b и c даже не будут считаться (если это функции - то не будут вызваны) |
|
|
voipp |
![]()
Сообщение
#3
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 116 Регистрация: 20.10.2009 Из: Msk Пользователь №: 1166 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Алексей1153 |
![]()
Сообщение
#4
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
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 ложно |
|
|
voipp |
![]()
Сообщение
#5
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 116 Регистрация: 20.10.2009 Из: Msk Пользователь №: 1166 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
а попробуйте вот так :
![]() |
|
|
Алексей1153 |
![]()
Сообщение
#6
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
voipp, вот теперь убедил
![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 16.3.2025, 23:35 |