У меня возникли некоторые нечетные проблемы в последнее время с некоторым кодом, который я написал.Умножение на sizeof (char) отличается от умножения на размер char
printf("%li\n",(sizeof(char)));
printf("%li\n",sizeof(4*(sizeof(char))));
Когда я запускаю код, первая строка печатает «1», а вторая печатает «8». Если бы я умножился 4 на 1, я бы получил четыре. Почему это происходит?
Любопытный: Почему вы определили формат кода ''% li \ "' с 'sizeof (char))'? – chux
Спецификатор формата для 'size_t' (тип результата' sizeof') - ''% zu ''! – Olaf
Правильный C99/C11 ['printf()'] (http://pubs.opengroup.org/onlinepubs/96999197/functions/printf.html) модификатор длины для 'size_t' -' z', как в '% zu '. Это то, к чему стремился @chux - вы должны использовать '% zu' или что-то подобное, а не'% li', которое не гарантируется. –