栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言字符串、转义字符、操作符

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言字符串、转义字符、操作符

字符串、转义字符、操作符几个注意事项 1.字符串

字符串的结束标志:

求字符串的长度:使用strlen函数

在arr2数组中再加个’’字符,就能正确打印出abc

char arr1[] = "abc";			//内存存放形式:abc
char arr2[] = {'a','b','c'};	//内存存放形式:abc?????????

//打印字符串
printf("%sn",arr1);		//abc
printf("%sn",arr2);		//abc烫烫烫烫烫烫b

//求字符串长度
printf("%dn",strlen(arr1));		//3
printf("%dn",strlen(arr2));		//随机值

注︰字符串的结束标志是一个的转义字符。在计算字符串长度的时候是结束标志,不算作字符串内容。

2.转义字符

ddd ddd表示1~3个八进制的数字。如:130 X
xdd dd表示2个十六进制数字。如: 30 0

printf("%cn",'130');	//8进制的130是十进制的88,按%c的形式打印就是字符X
printf("%cn",'101');	//8进制的101是十进制的65,按%c的形式打印就是字符A
printf("%cn",'x30');	//16进制的30是十进制的48,按%c的形式打印就是字符0

‘130’ -> 1 * 82+3 * 81 = 88

‘101’ -> 1 * 82+1 * 80 = 65

‘x30’ -> 3 * 161 = 48

printf("%d n", strlen("c: test328test.c"));		//14

这个字符串的长度是14,因为t是一个字符,32是一个字符,因为八进制数中没有8,所以字符8不能算进转义字符里

注释有两种风格:

C语言风格的注释 缺陷:不能嵌套注释

C++风格的注释 //xxxxxxxx 可以注释一行也可以注释多行

3.操作符

sizeof是一个操作符,不是函数

作用:计算类型或者变量的大小的

int main()
{
	int a = 10;
	printf("%d n", sizeof(int));	//可以直接求类型大小,结果为4
	printf("%d n", sizeof(a));		//也可以求变量的大小,结果为4
	return 0;
}

计算数组大小方法:

int main()
{
	int arr[10] = {0};
	printf("%dn",sizeof(arr));		//计算的是数组的总大小,单位是字节,结果为40
	printf("%dn",sizeof(arr[0]));	//数组的第一个元素的大小,结果为4
	int sz = sizeof(arr)/sizeof(arr[0]);	//数组中的字节大小除以一个元素的大小,就是数组元素的个数,结果为10
	printf("%dn",sz);
    return 0;
}

按位取反~

int main (){
{
	int a = 0;
	printf ( "%d n", ~a) ;		//结果是-1
}

解释:

因为a为0,所以其在32位系统下的二进制为:

00000 0000 0000 0000 0000 0000 0000 0000
~a:1111 1111 1111 1111 1111 1111 1111 1111

因为整数在内存中存储的是补码

所以,取反后a在内存中的存储是全1,而%d输出要转为原码,由补码->反码->原码,结果得到-1,所以负数在内存中存储和输出会经过二进制计算转化

1111 1111 1111 1111 1111 1111 1111 1111(补码)

​ ↓

1111 1111 1111 1111 1111 1111 1111 1110(反码)

​ ↓

1000 0000 0000 0000 0000 0000 0000 0001(原码)

所以结果输出为:-1

正整数:原码、反码、补码相同

负数:在内存中是以补码形式保存的,补码等于反码加一

逗号操作符

逗号表达式,是从左向右依次计算的

整个表达式的结果是最后一个表达式的结果

int main()
{
	int a = 0;int b = 3;int c = 5;
	int d = (a = b + 2,c = a - 4, b = c + 2);	// a=3+2=5,		c=5-4=1,	b=1+2=3		最终d = b = 3
	printf ("%d n", d);			//结果是3
}

示例代码:

a = get_val();
count_val(a);
while (a > 0)
{
    //业务处理
    a = get_val();
    count_val(a);
}

如果使用逗号表达式,改写后可减少冗余:

while (a = get_va1(),count_val(a), a>0)
{
		//业务处理
}
下标引用操作符[ ]

访问数组下标时用的[ ]叫做下标引用操作符

printf ("%d n", arr[4] );	//[]的操作数是2个:arr , 4
小括号():函数调用操作符

如 fun(a,b)

操作数有三个,fun,a,b,有些函数没有参数,那就一个操作数,就是函数名

结构成员访问操作符 . ->

.

使用:

struct B
{
    char name[10];
    char id[10];
    int price;
};

int main()
{
    Struct B b;
    printf("书名:%s n", b.name);
    printf("书号:%s n", b.id);
    printf("定价: %dn", b.price);
    return 0;
}

->用于指针形式

struct B
{
    char name[10];
    char id[10];
    int price;
};

int main()
{
    struct Book b = { "c语言","C20210509",55};
    struct Book * pb = &b;
    printf("书名:%s n",(*pb).name);
    printf("书号:%s n",(*pb) .id) ;
    printf("定价:%d n", (*pb) .price);
	//等价于下面写法,一般使用下面的写法,结构体指针->成员名
    printf("书名:%s n",pb->name);
    printf("书号:%s n",pb->id) ;
    printf("定价:%d n", pb->price);
    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836558.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号