代码如下:
int main(void)
{
char c1='b',c2='e';
printf("%d,%cn",c2-c1,c2-'a'+"A");
return 0;
}
为什么我在编译的时候不会报错呢?而且都有结果?后面的c2-'a'+"A"不是int型加char*型字符串吗?这样能加吗?若能加请大牛说明下理由,请问为什么呢?
代码如下:
int main(void)
{
char c1='b',c2='e';
printf("%d,%cn",c2-c1,c2-'a'+"A");
return 0;
}
为什么我在编译的时候不会报错呢?而且都有结果?后面的c2-'a'+"A"不是int型加char*型字符串吗?这样能加吗?若能加请大牛说明下理由,请问为什么呢?
int + char*
当然能加,加出来就是char*
啊,C语言字符串处理的基础动作,指针基础啊。
比如 char* str = "balabala";
*(str+1)
就是str[1]
也就是字符a
, *(str+2)
就是字符l
。
谁踩我啦,给出理由啊。
题主这代码有问题肯定是有问题,char*
是不能用%c
打印的,也字符串越界了。但是这里确实是一个数和一个指针相加,属于指针基础知识。
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
我使用gcc是编译不过的,下面是调整后可以通过编译的代码。这下应该可以看清楚了吧。