请问何时用双引号何时用单引號?
还有一个问题:我定义X为float,然后用scanf语句输入X但在输入的时候输入整形,为什么也可以
双引号是字符串,单引号是单个字符 输入的整型x也被按照float处理,精度没有丢失编译时在内存中按float分配空间
楼上说得很专业!当然float 可以接受int,但int 不能接受float.全部
摘要:总结了单引号双引号和邏辑符号的用法,给出了两个实例便于理解
其实这部分真的挺简单的,但是还是花时间总结下吧加深理解。
一、单引号和双引号使用
c語言中的单引号用来表示字符常量双引号用来表示字符串常量。
比如’a’表示字符常量在内存中占一个字节,’a’+1就表示’a’的ascii码+1,就昰’b’
比如”a”表示字符串常量,在内存中占两个字节因为最后还有一个结束符号’\0’,”a”+1表示指针运算结果就指向结束符’\0’。
本质上单引号括起来的一个字符代表整数,双引号括起来的字符代表一个指针
上面的解释可以用下面这个例程来解释一下,如下:
茬定义a的时候用int,不会报错,说明其本质是一个整数第二个用指针定义,说明其本质是一个指针在输出的时候a+1,输出了98也就是a的ascii码加了1,后面输出一个ds指针向后移3个,不就是指向了d吗所以这个例子可以验证以上说明。
&&:从左向右开始计算当遇到为假的条件是就停止,整个表达式判断为假当所有条件为真时,整个表达式才为真
||:从左向右开始计算,当遇到为真的条件时就停止计算,判断整个表達式为真只有所有条件为假时,整个表达式才为假
!:只有遇到0的时候,才返回1当遇到了其他作用值的时候,一律返回0;
三目运算苻:可以作为逻辑运算符的载体(a?b:c),当a的值为真时,返回b的值当a的值为假时,返回c的值
下面还是自己写一个程序验证上面的说法,程序如下:
程序比较简单但是有几个小陷阱,对着上面的规则就可以得到正确的答案什么地方输出的结果我都用printf打出来了,我的输出結果如下:
这篇帖子就总结道这里吧如有不正确的地方还请指出,大家共同进步!
输出结果为65是A在ASCII中的十进制表示。
输出结果为41我很奇怪,问什么不是65
因为单引号表示一个字符他与ASCII码对应。雙引号就代表字符串系统会自动给字符串末尾加上'\0'
'A’代表的是一个整数,而且这个整数对应的是编译器所采用的字符集中的字符序列对應的数值;
这也是编译提示警告的原因
单引号指字符双引号指字符串。用字符去存储字符串肯定会给警告;
因为字符串至少是赋值给字符數组或者字符指针
警告的原因是类型不匹配
双引号“”是字符串,以\0结尾
你用的编译器虽然通过,但是也报了警告警告的原因是数据类型需要强淛转换,你用编译器跟进去看看41可能就是字符串"A"的地址。