我不知道C和C++允许multicharacter literal:不是'c'(C中的int类型和C++中的char),但'tralivali'(类型为int!)
enum
{
ActionLeft = 'left',
ActionRight = 'right',
ActionForward = 'forward',
ActionBackward = 'backward'
};
Run Code Online (Sandbox Code Playgroud)
标准说:
C99 6.4.4.4p10:"包含多个字符(例如,'ab')的整数字符常量的值,或包含未映射到单字节执行字符的字符或转义序列的值是实现定义的".
我发现它们广泛用于C4发动机.但是,当我们谈论平台独立序列化时,我认为它们并不安全.Thay也会让人感到困惑,因为看起来像字符串.那么什么是多字符文字的使用范围,它们对某些东西有用吗?他们是否只是为了与C代码兼容而使用C++?它们被认为是goto运算符的坏特征吗?
我正在做一些C拼图问题.在大多数情况下,我能够找到正确的答案,但有了这个问题,我就遇到了问题.我通过使用编译器知道正确的答案,但我不知道原因.
看看代码:
char c[] = "abc\012\0x34";
Run Code Online (Sandbox Code Playgroud)
strlen(c)使用标准C编译器会返回什么?
当我期望的是3时,我的编译器返回4.
我的想法是strlen()搜索NULL角色的第一次出现,但不知何故结果是比我预期的更多.
知道为什么吗?
任何人都可以解释下面的代码,并请解释反斜杠(\)在这种情况下的作用.什么\',\",\ooo,\ \,\?手段?
#include <stdio.h>
int main(){
char a = '\010';
char y = '010';
printf("%d,%d",a,y);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:8,48
此代码的输出是56。
//输出:56
#include <stdio.h>
int main() {
char c = '\08';
printf("%d",c);
return 0;
}
Run Code Online (Sandbox Code Playgroud)