c - 字符串常量和字符常量

标签 c string char printf

int main(){
   printf("the value is %d \n  " ,'x'+ "x");

   return 0;
}

输出

4196024

但是前一个('x')是一个整数,而后一个("x")是一个字符串。

我能知道怎么做吗?或者它给我一个垃圾值。

最佳答案

文字字符串的类型为 char [N],其中 N 刚好足以容纳文字中的所有字符加上终止符 '\0'(即 "x" 的类型为 char[2])。

在表达式 'x' + "X" 的上下文中,数组被转换为指向其第一个元素的指针,然后该地址加上 int'x'。生成的地址被传递给带有无效转换规范的 printf()

您已经调用了未定义的行为!

试试这个

printf("the valus is %p\n", (void*)('x' + "x"));

另请注意,地址 'x' + "x" 不是程序中任何对象的一部分。仅仅评估它已经是未定义的行为。

关于c - 字符串常量和字符常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31134667/

相关文章:

java - 如何通过套接字读取/写入二维字符数组?

c - 大小信息如何通过指针传递?

c - 我如何修复显示的超出文件大小限制的消息

python - 比较矩阵行与字符串

python - 如果找到另一个关键字,则从 python 中的一行中提取子字符串

忽略符号的 C 编译器标志

c - 查找 char 中的数字

c++ - 最大subarray_problem理解

c - 多线程服务器中的段错误

C++。将符号行读入字符数组/vector 的最快方法