I do not speak english,so i try to show my meaning
When you use command line in debug mode, sizeof("a") //value is 1 sizeof('a') //value is 2 would got wrong value.
seems been upended.
IDE-Version: 礦ision3 V3.53 Copyright (c) Keil Elektronik GmbH / Keil Software, Inc. 1995 - 2007 Tool Version Numbers: Toolchain Path: C:\KeilC51\C51\BIN\ C Compiler: C51.Exe V8.09 Assembler: A51.Exe V8.00d Linker/Locator: BL51.Exe V6.05 Librarian: LIB51.Exe V4.24 Hex Converter: OH51.Exe V2.6 CPU DLL: S8051.DLL V3.12 Dialog DLL: DCYG.DLL V2.44d
"So a string literal has type "array of char" and not "pointer to char"?"
Right. I sometimes use sizeof with a string literal argument in the following context to size a buffer not too big, but just right, along with providing some bit of documentation as to how something will end up being formatted.
char buf[sizeof "Temp: -ttt Hum: hh%"]; sprintf(buf, "Temp: %4d Hum: %2u%%", (int)temperature, (unsigned)humidity);