c++ char *调用delphi pansichar_C和C++中字符文字的类型差异

e3062be1cbc619e5b7281cefd9c37e09.png

C/C++中的每个文字(常量)都将具有与之关联的类型信息。

在C和C++中,数字文字(例如10)的类型均为int。这意味着sizeof(10)和sizeof(int)将返回相同的值。

但是,字符文字(例如'V')将具有不同的类型,sizeof('V')在C和C ++中返回不同的值。在C语言中,字符文字被视为int类型,而在C++语言中,字符文字被视为char类型。

int main() {    printf("sizeof('V') = %d sizeof(char) = %d", sizeof('V'), sizeof(char));    return 0; } 

以上程序的结果:

C 结果 – sizeof(‘V’) = 4 sizeof(char) = 1C++ 结果 – sizeof(‘V’) = 1 sizeof(char) = 1

在C++中,需要这种行为来支持函数重载。一个例子将使其更加清楚。预测以下C++程序的输出。

void foo(char c) {    printf("From foo: char"); } void foo(int i) {    printf("From foo: int"); }   int main() {    foo('V');    return 0; } 

编译器必须调用

void foo(char);

因为“ V”类型是char。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值