cgg之字面值
字面值时源代码中用来描述固定值的记号,可能是整数、浮点数、字符或者字符串
2.1 整数常量
除了常见的十进制数外,还有八进制(以数字0开头)或者十六进制(0x/0X)表示法。
#include <stdio.h> int main()
{
int x = ;
int y = 0x0A; printf("x=%d,y=%d\n",x,y);
return ;
}
输出:
x=8,y=10
常量类型可以通过后缀来区分类型
0x200 -->int
200U -->unsigned int 0L -->long
0xf0f0UL -->unsigned long 0777LL --->long long
0xFFULL --->unsigned long long
2.2 浮点常量
默认浮点常量是double,可以用F后缀表示float,用L后缀表示long double
printf("%f\n",0.111111111F);
printf("%f\n",0.11111);
printf("%Lf\n",.9999999999L);
printf("%Lf\n",.99L);
输出:
0.111111
0.111110
1.000000
0.990000
对于long double输出必须使用%Lf的格式,否则输出结果是错误的。
2.3 字符常量
字符常量默认是int类型,除非用前置L表示wchar_t宽字符类型
#include <stdio.h>
#include <locale.h> int main()
{
int i; printf("%c,%c,%c\n",c,c2,c3); setlocale(LC_CTYPE,"en_US.UTF-8");
wchar_t wc = L'中'; char buf[] = {}; int len = wctomb(buf,wc); printf("%d\n",len); for(i = ; i<len; i++)
printf("0x%02X ",(unsigned char)buf[i]);
printf("\n"); return ;
}
输出:
0xE4 0xB8 0xAD
使用python进行验证
>>> astr='中'
>>> astr
'\xe4\xb8\xad'
结果正确。
2.4 字符串常量
C语言中的字符串是一个以NULL(也就是\0)结尾的char数组。
空字符串在内存中占用一个字节,包含一个NULL字符。
char s[] = "Hello,World!\n";
printf("strlen=%d\n",strlen(s));
printf("sizeof=%d\n",sizeof(s)); #输出结果为: strlen=
sizeof=
------------------------------------------------------------------
char* ps = "Hello,World!\n";
printf("strlen=%d\n",strlen(ps));
printf("sizeof=%d\n",sizeof(ps)); #输出结果为:
strlen=
sizeof=8 #是指针char*代表的大小
同样可以使用L前缀声明一个宽字符串。
#include <stdio.h>
#include <locale.h> int main()
{
int i; printf("%c,%c,%c\n",c,c2,c3); setlocale(LC_CTYPE,"en_US.UTF-8");
wchar_t* ws = L"中国人"; char buf[] = {}; size_t len = wcstombs(buf,ws,); printf("%ls\n",ws);
printf("%d\n",len); for(i = ; i<len; i++)
printf("0x%02X ",(unsigned char)buf[i]);
printf("\n"); return ;
}
输出:
中国人 0xE4 0xB8 0xAD 0xE5 0x9B 0xBD 0xE4 0xBA 0xBA
使用python进行验证:
>>> astr="中国人"
>>> astr
'\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba'
和char字符串类似,wchar_t字符串以一个4字节的NULL结束。
#include <stdio.h>
#include <locale.h> int main()
{
int i; setlocale(LC_CTYPE,"en_US.UTF-8");
wchar_t ws[] = L"中国人"; printf("%ls\n",ws); printf("len=%d,size=%d\n",wcslen(ws),sizeof(ws)); int len = sizeof(ws);
unsigned char* b = (unsigned char*)ws; for(i = ; i<len; i++)
printf("0x%02X ",b[i]);
printf("\n"); return ;
}
输出结果为:
中国人
len=3,size=16
0x2D 0x4E 0x00 0x00 0xFD 0x56 0x00 0x00 0xBA 0x4E 0x00 0x00 0x00 0x00 0x00 0x00
编译器会自动连接相邻的字符串,便于在宏或者代码中更好地处理字符串。
对于源代码中超长的字符串,除了使用相邻字符串外,还可以用"\"在行尾换行,这个在很多语言都支持。
#include <stdio.h>
#define WORLD "world!"
int main()
{
char* s = "Hello" " "WORLD"\n"; char* s2 = "Hello"
" World!\n"; char* s3 = "Hello \
World!\n";
printf("%s",s);
printf("%s",s2);
printf("%s",s3);
return ;
}
输出结果为:
Hello world!
Hello World!
Hello World!
cgg之字面值的更多相关文章
- C++中的字面值指定类型
C++中只有内置类型存在字面值,没有类(class)类型字面值.例如:0是int类型的字面值,3.14159是double类型的字面值. 字面值类型很多 整型浮点字面值 20 ...
- [原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- c++学习笔记——字面值常量类
字面值常量类:数据成员都是字面值类型的聚合类是字面值常量类.如果一个类不是聚合类,但是它符合一下要求,则它也是个字面值常量类: 1.数据成员都必须是字面值类型. 2.类必须至少含有一个constexp ...
- Java基础-字面值
在Java源代码中,字面值用于表示固定的值(fixed value).数值型的字面值是最常见的,字符串字面值可以算是一种,当然也可以把特殊的null当做字面值.字面值大体上可以分为整型字面值.浮点字面 ...
- Python文本(字面值)
Python中的文本是一些内置类型的常量表示方法. 字符串和字节 字符串是一系列的字符序列,Python中用单引号(''),双引号(""),或者三个单引号(''' ''')三个双引 ...
- C语言的 (强制类型转换) 以及 '字符字面值'
C语言的显式/隐式类型转换,都有一个中间变量的存在,原数据的类型.内容都不变. 以下代码,都用GCC编译. #include<stdio.h> int main() { char c = ...
- 使用#define定义字面值和伪函数
#define是C语言提供的宏命令,其主要目的是:在编程时,为程序员提供一定方便,并能在一定程度上提高程序的执行效率.#define将一个标示符定义为一个字符串,该标示符被称为宏,被定义的字符串称为字 ...
- C++ 字符串字面值
C++ 字符串字面值 C++ 基本字符串类型 C++ 字符串类型 char 和 wchar_t c11 新增了 char16_t 和 char32_t 例子: wchat_t title[] = L& ...
- c风格字符串,字符串字面值,c++字符串
C风格字符串:本质上就是以空字符null为结束符的数组 可以简单的理解为:有'\0'的是c风格字符串,无'\0'的是普通字符数组 字符串字面值:是一串常量字符,字符串字面值常量用双引号括起来的零个或多 ...
随机推荐
- 【原创】修复ios输入框获取焦点时不支持fixed的bug
前些日子,做了一个手机站的项目,有一个页面是这样的, 有一个固定(position:fixed)的头部和底部导航,中间是一些表单内容,没啥特别的.但是到了ios中,正常滚动页面没有问题,一旦触发了文本 ...
- ios 指定页面禁用第三方键盘,使用系统的键盘
因为项目需要,需要在添加银行卡和提现页面使用数字键盘, 如果用户没有安装第三方键盘是没啥大问题的,但是如果用户手机安装了第三方的键盘的话,有时候会无法调用起第三方的数字键盘,或者第三方键盘样式不符合, ...
- JAVA提高七:类加载器
今天我们学习类加载器,关于类加载器其实和JVM有很大关系,在这里这篇文章只是简单的介绍下类加载器,后面学习到JVM的时候还会详细讲到类加载器,本文分为下面几个小节讲解: 一.认识类加载器 1.什么是类 ...
- Java Stream
Stream 有两种类型的操作:Intermedidate操作和Terminal操作 Intermedidate(中间操作):Stream可以有多个Intermediate操作,Intermedida ...
- Integrates Git with Sublime 3 to pull or push to Github by using Sublime plugin Git
1. Git must be installed, Sublime plugin "Git" only connects Sublime with Git. Download UR ...
- Java基础(00)
Java发展史 Java之父:詹姆斯.高斯林(James Gosling). SUN(Stanford University Network 斯坦福大学网络公司)产物. 1995年5月23日,java ...
- 【工具】Spring项目转化Spring Web项目插件
前言 源于前一篇博文中提到,将Spring项目转化为Spring Web项目,发现添加项目文件和修改pom.xml文件等都是手动完成的,心想着开发一个Idea插件来自动化完成上面的过程,实现一键转化. ...
- 虚拟专用网VPN
1. 三个专用地址块: (1)10.0.0.0到10.255.255.255 (2)172.16.0.0到172.31.255.255 (3)192.168.0.0到192.168.255.255 2 ...
- css中居中方法小结
---恢复内容开始--- 1.文字垂直居中 .header_nav-item{ height:38px; line-height:38px; } 即文字所在模块的高度和行高设置成一样的! 2.块元素垂 ...
- HandlerThread学习
之前基本讲过Handler的一些知识了,我们今天学习下Google封装的一个实现线程通信的一个类HandlerThread 一.HandlerThread使用 @Override protected ...