Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > А такой прикол видели?


Автор: TeeT 9.12.2005, 09:49
Что выведет программа? smile

Код

#include <stdio.h>

int main(int argc, char* argv[])
{
 printf(sizeof(char)==sizeof('a')? "C" : "C++");
 return 0;
}

Автор: Neitron 9.12.2005, 10:05
И в чем прикол? Все верно выводит программ, так как sizeof(char) равно sizeof('a')

Автор: S.A.P. 9.12.2005, 10:07
А чем прикол? В том, что компилятор С выведет "С++", а компилятор С++ выведет "С"? smile

Автор: TeeT 9.12.2005, 10:49
Цитата(Neitron @ 9.12.2005, 10:05)
И в чем прикол? Все верно выводит программ, так как sizeof(char) равно sizeof('a')

Вот именно, что не равно - в С smile :

Some ХЭЛП: smile
Sizes of character types

Output when compiled as C program Output when compiled as C++ program

Sizeof int = 4 Sizeof int = 4
Sizeof char = 1 Sizeof char = 1
Sizeof ch = 1 Sizeof ch = 1
Sizeof CH = 4 Sizeof CH = 1
Sizeof wchar_t = 2 Sizeof wchar_t = 2


Добавлено @ 10:52
ой... забыл самое главное

еще кусок из того же ХЭЛПА
Код

Note:    To compare sizes of character types, compile this as a C program and then as a C++ program.

#include <stdio.h>

#define CH 'x'       /* A CHARACTER CONSTANT */
void main(void) {
   char ch = 'x';    /* A char VARIABLE      */
   printf("\nSizeof int     = %d", sizeof(int) );
   printf("\nSizeof char    = %d", sizeof(char) );
   printf("\nSizeof ch      = %d", sizeof(ch) );
   printf("\nSizeof CH      = %d", sizeof(CH) );
   printf("\nSizeof wchar_t = %d", sizeof(wchar_t) );

}

Автор: srd 10.12.2005, 15:54
Символьные константы в Си имеют тип int, а в Си++ - тип char.
http://www.eskimo.com/~scs/C-faq/q8.9.html

Автор: LPBOY 10.12.2005, 16:47
А как вам такой прикол?

Код

#include <stdio.h>

int main()
{
  if(2//**/ 2
    == 2) printf("C++");
  else printf("C")
  return 0;
}

Автор: Void 10.12.2005, 16:52
LPBOY
Забавно smile
Правда, с C99 уже работать не будет.

Автор: LPBOY 10.12.2005, 17:11
Тогда так:

Код

#include <stdio.h>
int main()
{
  if(2//**/ 2
    == 2) printf("C++ or C99 :))");
  else printf("C")
  return 0;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)