精华内容
下载资源
问答
  • C语言单引号和双引号

    2020-03-26 10:49:24
    最近的C语言课在教字符串,貌似N多同学搞不清楚单引号和双引号的区别,有人还以为在C语言里用哪个都可以…其实C语言中的单引号和双引号含义是一点也不一样滴… 看别人讲指针与数组时也有点弄不清sizeof一个双引号括...

    C语言单引号和双引号

    简介

    C语言 单引号和双引号的区别。最近的C语言课在教字符串,貌似N多同学搞不清楚单引号和双引号的区别,有人还以为在C语言里用哪个都可以…其实C语言中的单引号和双引号含义是一点也不一样滴…

    看别人讲指针与数组时也有点弄不清sizeof一个双引号括起来的数组竟然值会+1:如

    char a[]="123456";
    

    sizeof(a)的值为7

    含义不同。

    用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。而一般我们的编译器采用的都是ASCII字符集。因此’s’的含义其实和十进制数115的含义是一致的。

    而用双引号引起的字符串,代表的是一个指向无名数组起始字符的指针。

    大小不同。

    用单引号引起的一个字符大小就是一个字节。

    而用双引号引起的字符串大小是字符的总大小+1,因为用双引号引起的字符串会在字符串末尾添加一个二进制为0的字符’\0’。

    展开全文
  • C语言中的单引号和双引号含义迥异,用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值,因此,采用ASCII字符集的编译器而言,‘a’的含义与0141或97严格一致。...

    写惯了python对单引号和双引号都混了。。

     

    C语言中的单引号和双引号含义迥异,用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值,因此,采用ASCII字符集的编译器而言,‘a’的含义与0141或97严格一致。而用双引号引起的字符串,代表的却是一个指向无名数组起始字符的指针,该数组被双引号之间的字符以及一个额外的二进制值为零的字符‘\0’初始化。

     

    双引号里面的是字符串 而单引号里面的代表字符 朋友 你可以这样理解 只要是在双引号里面的不代表任何表达式的意义

    假如 int a=10 cout<<"a";这是用 双引号 它在屏幕上就是 a

    而 int a=10 cout<<a; 这个a就代表表达式a=10在屏幕上是10

    而int a=10 cout<<‘a’;将会是65 因为用单引号里面的代表字符 而字符要用ASCII码 表示

    转载于:https://www.cnblogs.com/cymwill/p/9277701.html

    展开全文
  • C语言 单引号和双引号

    千次阅读 2018-04-22 22:59:36
    刚开始学习C语言时没有注意过这个问题,最近看了狄泰软件的唐老师C进阶视频时发现这里面还有东西需要注意的,下面我讲下,希望对新人有所帮助(这里面讲的内容主要参考狄泰软件的唐老师C进阶教程中的单引号和双引号...

          刚开始学习C语言时没有注意过这个问题,最近看了狄泰软件的唐老师C进阶视频时发现这里面还有东西需要注意的,下面我讲下,希望对新人有所帮助(这里面讲的内容主要参考狄泰软件的唐老师C进阶教程中的单引号和双引号课题)

          单引号:单引号实际就是字符字面量,字符字面量就是字符(就是ASCII对应字符),就是整数

         双引号:双引号实际就是字符串字面量,字符串字面量就是字符指针,就是字符首地址

    下面通过几个代码来加深印象(感觉很多概念都必须通过代码反应,不然印象不深刻,时间一长就忘了)

    平台:ubuntu10  gcc编译器

    #include <stdio.h>
    int main()
    {
        char* p1 =  1 ;
        char* p2 = '1';
        char* p3 = "1";
        printf("%s, %s, %s", p1, p2, p3);
        printf('\n');
        printf("\n");
    
        return 0;
    }

    编译过程会出现警告,执行时会出现段错误,就是打印p1,p2,p3导致段错误

    首先分析原因:p1 = 1,这样p1指针就指向内存0x00000001地址,p2 = '1' ,'1'字符值是0x31,所以p2指针就指向内存0x00000031地址,而p3 = “1”,“1”是字符串,所以p3就指向"1"字符串内存首地址

    这里我们知道内存地址不是所有的地址都可以访问的,比如内存0x00000000首地址,就不能访问,所以p1和p2指针都是不对的,执行会报段错误,而p3指向保存"1"字符串首地址是正确的,因为"1"字符串是保存在内存允许访问的内存地址处的

    printf("%s, %s, %s", p1, p2, p3);

    我们把上面这一行屏蔽掉,再进行编译,执行,发现还是段错误

    这会是

    printf('\n');

    这行段错误,这是因为printf函数,第一参数是字符串指针,只能接收字符串首地址,而这里传输的'1'字符是0x00000031,但是这里在内存地址是不允许访问的,所以又出现段错误,其实画成图片就很好理解了




    从上面图片可以看出,只有从0x08048000内存地址开始之后才可以存储变量,访问变量,而上面地址是不允许访问的,访问就会出现段错误

    现在看下下面代码有什么问题


    从上面分析得出结论,C语言编译器允许字符串对字符进行赋值,但是没有任何意义,因为是把内存首地址赋给了字符了

    下面再来分析一个程序

    #include <stdio.h>
    int main()
    {
        char c = " ";
        while( (c == "\t") || (c == " ") || (c == "\n") )
        {
            scanf("%c", &c);
        }
        return 0;
    }

    发现没有输入,执行完了,什么都没有,来我们分析下

    char c = "";字符串赋给了1个字符变量,相当于内存地址赋给了1个字符变量

    while( (c == "\t") || (c == " ") || (c == "\n") )

    这行是判断c字符是否等于" "字符串首地址,显然两个" "字符串是不会相等的,肯定存在不同的内存地址,肯定不会相同的,所以while括号里面执行为假,所以不会执行,那这里考察是什么知识点,实际它是把字符和字符串搞混了,理论程序应该是这样的

    char c = ' ';

    while((c == '\t') || (c == ' ')||(c == '\n'))

    {

           scanf("%c",&c);

    }

    所以我们这会总结下:

    1、C语言中单引号用来表示字符字面量的,字符字面量就是字符就是整数

    2、C语言中双引号用来表示字符串字面量的,字符字面量就是字符指针,就是字符串首地址,是个地址

    3、C编译器允许字符串对字符变量赋值,只能得到字符串首地址,没有任何意思

    4、printf()函数的第一个参数是接收字符串首地址

    5、内存的低地址空间不能在程序中随意访问

    展开全文
  • c语言 单引号和双引号的区别

    千次阅读 2018-08-25 15:34:02
    c语言中, 单引号表示一个字符。 双引号表示一个字符串

    c语言中,

    单引号表示一个字符

    双引号表示一个字符串

    展开全文
  • C语言 单引号和双引号的区别

    万次阅读 多人点赞 2019-03-12 15:26:50
    笔者在编写C时,使用以下语句时出错: ...意思是从int到 char * 是非法的转换,这就意味着后面的字符串被程序认定为int型,实际上就是单引号和双引号的使用区别造成了这个错误。 不同之处 1、含义不同 用...
  • 含义不同: 用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用... 而用双引号引起的字符串大小是字符的总大小+1,因为用双引号引起的字符串会在字符串末尾添加一个二进制为0的字符'\0'。 ...
  • c语言中的单引号和双引号可是有很大区别的,使用之前一定要了解他们之间到底有什么不同,下面小编就给大家详细的介绍一下吧,对此还不是很了解的朋友可以过来参考下
  • 最近的C语言课在教字符串,貌似N多同学搞不清楚单引号和双引号的区别,有人还以为在C语言里用哪个都可以...其实C语言中的单引号和双引号含义是一点也不一样滴... 看别人讲指针与数组时也有点弄不清sizeof一个双...
  • 单引号和双引号在C中的意义完全不同,包围在单引号中的一个字符只是编写整数的另一种方法。这个整数是给定的字符在实现的对照序列中的一个对应的值,即ASCII码值。因此在一个ASCII实现中,‘a’和0141或97表示完全...
  • (1)本质上单引号括起来的一个字符代表整数(2)双引号括起来的字符代表一个指针(3)C编译器接受字符字符串的比较,可意义是错误的(4)C编译器允许字符串对字符变量赋值,其意义是可笑的 由以上小结可以看出,...
  • 后来反复 查找原因,才知道单引号''和双引号“”的区别: (1)。含义不同。 单引号引起的一个字符代表一个整数 ,整数值对应于该字符在ASCII字符集中的序列值; 双引号引起的都是字符串,哪怕只有一个字符也...
  • c: #include <stdio.h> int main() { char a; int i=0,j=0; while(scanf("%c",&... if(a=='A'){//单引号 i++; } else if(a=='B'){//单引号 j++; } } if(i>j) printf("A"..
  • python单引号和双引号的区别简单来说,在Python中使用单引号或双引号是没有区别的,都可以用来表示一个字符串。但是这两种通用的表达方式,除了可以简化程序员的开发,避免出错之外,还有一种好处,就是可以减少转义...
  • 单引号:用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。而一般我们的编译器采用的都是ASCII字符集。因此's'的含义其实十进制数115的含义是一致的。 双引号:而...
  • 单引号表示单个字符,如:‘a’,而双引号则表示一个字符串,并以’\0’作为结束,如字符串"a"其实包含了两个字符:‘a’’\0’ C中, 在做字符比较时只能使用单引号。 ...
  • 在Python中使用单引号双引号是没有区别的,都可以用来表示一个字符串。但是这两种通用的表达方式可以避免出错之外,还可以减少转义字符的使用,使程序看起来更清晰。举两个例子:1、包含单引号的字符串定义一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 552
精华内容 220
关键字:

c语言单引号和双引号

c语言 订阅