打印'\0'字符和打印"\0"字符串在C语言中有什么区别?
核心区别
"\0"是C语言中的字符串常量,'\0'是字符常量,二者的类型和在IO操作下的输出行为完全不同:
"\0"本质是存储了两个连续'\0'字符(用户显式写的1个+字符串默认自动追加的结尾1个)的只读内存区域,作为参数传递时会退化为指向首地址的char*指针。
当它被%s格式符匹配,或者出现在printf的格式串中时,printf的字符串处理逻辑会遇到\0就停止输出,不会把\0本身写入标准输出。所以你列的可接受写法最终输出只有'1'和'0'两个字符,刚好匹配评测要求的输出10。'\0'本质是值为0的int类型常量(C语言中字符常量默认是int类型)。
当它被%c格式符匹配,或者作为putchar的参数时,会被当做一个普通的ASCII字符,直接写入标准输出。所以你列的被拒绝写法最终输出是'1'、'0'、'\0'三个字符,多了一个空字符,不符合评测要求因此被拒。
内容的提问来源于stack exchange,提问作者Michael Pruglo
相关产品推荐
相关产品推荐

