zoukankan      html  css  js  c++  java
  • C语言中的单引号和双引号的区别

    首先肯定地说,二者是有区别的,不是说用谁都一样。

    1、实质区别,代表的含义不同

    'A'代表的是一个整数,而且这个整数对应的是编译器所采用的字符集中的字符序列对应的数值。所以'A'跟ASCII中的65意义是相同的。

     1 # include <iostream>
     2 
     3 using namespace std;
     4  
     5 int main(int argc, char const *argv[])
     6 {
     7     char str1 = 'A';
     8 
     9     int str2 = 65;
    10 
    11     cout<<str1<<endl<<(char) str2<<endl;
    12     
    13     return 0;
    14 }

    2、占用的内存空间大小不同

     1 # include <iostream>
     2 
     3 using namespace std;
     4 
     5 int main(int argc, char const *argv[])
     6 {
     7     char str1 = 'A';
     8 
     9     char str2 = "A";
    10 
    11     cout<<sizeof(str1)<<endl<<sizeof(str2)<<endl;
    12 
    13     return 0;
    14 }

    大家猜一猜输出的str1的大小是多少?str2输出的大小是多少?

    ????????????????????????????

    不用猜了,为啥,因为编译不了啊。怎么会编译不了?因为编译器报错了。

    看出了因为啥了吗?我英文差,估计应该是说第9行,定义的一个字节存不下,建议你定义两个字节,就是char str2[2]来存放"A"。明明"A"应该占用一个字节啊?为啥要给他分配两个字节的空间呢?

    因为这里系统会在字符串的尾端默认添加一个二进制为0的字符'',其实它就是一个转义字符。

     1 # include <iostream>
     2 
     3 using namespace std;
     4 
     5 int main(int argc, char const *argv[])
     6 {
     7     char str1 = 'A';
     8 
     9     char str2[2] = "A";
    10 
    11     cout<<sizeof(str1)<<endl<<sizeof(str2)<<endl;
    12 
    13     return 0;
    14 }

  • 相关阅读:
    将本地sql文件导入到mysql中
    eclipse注释乱码问题
    导入import com.sun.image.codec.jpeg.JPEGCodec出错
    cmd启动和停止tomcat
    Tomcat修改端口
    ==和equals
    多态
    关键字——this,super,static,final
    方法重载、方法重写、四种权限修饰、JavaBean、代码块
    异常
  • 原文地址:https://www.cnblogs.com/arvintang/p/5115698.html
Copyright © 2011-2022 走看看