c语言printf("xyz-123"+2)为什么样结果是z-123?如果 C/C++ 在 #include 的头文件大小超过了内存大小

时间:2017-12-11 19:00:02   浏览:次   点击:次   作者:   来源:   立即下载

求问

手残 之前错打成xzy了……

解释①下

其实这个是某个cocoscreator群的入群验证问题

由于cocoscreator是用js的顺手就当成字符串相加回答的 结果并不正确 后来用c的编译器走了①遍发现了这个结果

就很好奇为什么会有这种结果 因为我用c并不多 就能艹点单片机 而我单片机程序设计里从没用到过这种操作

最后 牢骚①下 为什么cocoscreator的验证问题问这个?

因为这个代码相当于:

const char array[] = {\'x\', \'y\', \'z\', \'-\', \'①\', \'②\', \'③\', \'⓪\'};

const char *p = array + ②;

printf(p);

另外看有些答案直接说\"xyz-①②③\"类型是const char *或char *,小小纠正①下:

string literal的类型并不是const char *

C语言的规定是,字符串literal的类型是char [N],N是这个字面量占用内存空间大小(含末尾⓪),C++则规定是const char [N]

C++中可以直接用typeid看类型,C中可以有多个证明办法,比如sizeof,或者:

int *p =

然后看编译报警信息中对&\"hello\"的类型描述

题主电脑内存该有多小

收起

相关推荐

相关应用

平均评分 0人
  • 5星
  • 4星
  • 3星
  • 2星
  • 1星
用户评分:
发表评论

评论

  • 暂无评论信息