Простой printf с sizeof вообще не работает - PullRequest
6 голосов
/ 22 сентября 2010

Я получил самый простой код для отображения sizeof () типа данных, скажем, типа int.

#include <stdio.h>
int main() { 
  printf('%i', sizeof(int));
}

Независимо от того, что я делаю, например, помещаю sizeof (int) в целое число или использую«zu» вместо «i» выдает мне эту ошибку:

error: invalid conversion from ‘int’ to ‘const char*’

Что-то не так с моим компилятором?Я не понимаю, почему я не могу напечатать такой простой sizeof ..

РЕДАКТИРОВАТЬ: Кажется, printf('%s', 'foo'); STILL говорит мне, что я конвертирую int в const char*, как на земле ??

Ответы [ 4 ]

9 голосов
/ 24 марта 2014
printf("%zu", sizeof(int))
  • printf, а не print
  • %zu, а не %i (это значение без знака, а не целое число)
  • двойные кавычки, а не одинарные кавычки
8 голосов
/ 22 сентября 2010

Одинарные кавычки ' используются для разделения символьных литералов (тип int в C), а двойные кавычки " используются для разделения строковых литералов (тип "массив из char" в C).

printf объявляется следующим образом:

int printf (const char * format, ...)

Таким образом, вы пытаетесь передать int, когда функция ожидает const char * или что-то, что может быть преобразовано в const char *.

Примечание. В C ++ символьные литералы имеют тип char, строковые литералы - это "массив из const char".

5 голосов
/ 22 сентября 2010

Попробуйте print("%i", sizeof(int));

двойные кавычки отсутствуют

Также выясните, можете ли вы использовать cstdio вместо stdio.h, если вы находитесь на C ++.

1 голос
/ 22 сентября 2010

Это должно быть:

printf("%i\n", sizeof(int));

Это должны быть двойные кавычки.

...