Запитання з тегом «format-specifiers»



8
Як надрукувати "C без подписа" на C?
Я ніколи не можу зрозуміти, як друкувати unsigned longтип даних у C. Припустимо unsigned_foo, це unsigned long, я спробую: printf("%lu\n", unsigned_foo) printf("%du\n", unsigned_foo) printf("%ud\n", unsigned_foo) printf("%ll\n", unsigned_foo) printf("%ld\n", unsigned_foo) printf("%dl\n", unsigned_foo) І всі вони друкують якусь -123123123цифру замість того, unsigned longщо я маю.




11
Чому printf з одним аргументом (без специфікаторів конверсії) застарів?
У книзі, яку я читаю, написано, що printfз одним аргументом (без специфікаторів перетворення) застаріла. Рекомендує замінити printf("Hello World!"); з puts("Hello World!"); або printf("%s", "Hello World!"); Може хтось скаже мені, чому printf("Hello World!");це неправильно? У книзі написано, що вона містить вразливості. Які ці вразливості?

3
Незалежні від платформи size_t Специфікатори формату в c?
Я хочу роздрукувати змінну типу size_tна C, але, схоже, size_tце псевдонім для різних типів змінних на різних архітектурах. Наприклад, на одній машині (64-розрядної) такий код не видає жодних попереджень: size_t size = 1; printf("the size is %ld", size); але на моїй іншій машині (32-розрядної) наведений вище код видає таке попереджувальне …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.