c语言 为什么i%3cn 1,c语言中n+1个基础且容易出错的知识点

前言

为什么称为是n+1呢,因为我会持续更新本条博客。

1.“/”与“%”基本用法

除法运算符“/” :二元运算符,具有左结合性。参与运算的量均为整形时,结果为整型,舍去小数。如果运算量中有一个实型,结果为双精度型。

求余运算符“%” :二元运算符,具有左结合性。参与运算的量均为整形。求余运算的结果等于两个数相除后的余数。

“%”的一些注意点:

1.%与/在运算中先后顺序不同,例如;x%y/z与(x%y)/z的结果不同,在 用pow时pow(x%y,3)与pow((x%y),3)的结果也是不同的。

2.“/”通常去掉尾数,而“%”通常用来获得尾数。

2.C语言’\0’的含义

‘\0’是判定字符数组结束的标识,表示这串字符到结尾了;

注意:在字符数组中’0’是占一个位置的!

例如定义char c[6]=“hello”,而在内存中字符数组c则是"hello\0";

即’\0’在数组中占有空间却不被我们看到;

所以如果一个长度为10的字符串要放在字符数组里的话就应该把字符数组的长度定义为11

代码示例:

#include

int main()

{

char s[6]="hello";

int i=0;

while(s[i]!='\0')

{

printf("%c ",s[i]);

i++;

}

printf("\n");

}

输出结果

h e l l o

3.如何把字符1转化成整数1

#include

#include

int main()

{

char i='1';

printf("%d\n",i);

printf("%d",i-'0');

return 0;

}

输出结果

49(49为字符1的acsll码)

1

4.scanf与gets连用时的异常

例如

#include

#include

#include

int main()

{

char n,a[100];

scanf("%c",&n);

gets(a);

printf("%c",n);

printf("%s",a);

return 0;

}

当输入n后按下空格会直接输出n的结果,而没有这是为什么呢?下面来解释一下:

应为当用scanf赋值完按下空格或者回车,会被认为输入结束,而空格和回车被当作字符而没被scanf内变量吸收,会直接作用到gets上,被gets吸收,导致错误。

解决方法:可以在scanf();后加上getchar();或者改为scanf(“%d\n”,&n);

注:当scanf后有scanf("%c")时一样会出现相同异常

5.while(scanf)与while(gets)的正确用法

1. while(scanf()!=EOF)或者while(~scanf())

2. while(gets()!=NULL)

6.字符串比较原理

原理: 从两个字符串的第一个字符开始逐个进行比较(按字符的ASCII值进行大小比较),直到出现不同的字符或遇到‘\0’为止

就跟比较数字一样: 例如 1234 跟 1222 比较一样,第一个位跟第一位数字比,如果相等,看下一位,直到3和2比较,3大于2,这两个数的大小已经很明显了,就不用看下一位了,但是如果位数不同时,就不一样了,比如123 跟1234比较时,在字符中就被看为是1230和1234比较,字符串比较也是这样,只不过比较的是他们各自字符的ascll码。

本文同步分享在 博客“汤米先生”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是C语言指针的基础知识点: 1.指针的定义和初始化 指针是一个变量,其值为另一个变量的地址。定义指针变量时需要指定指针所指向的变量类型,然后使用*运算符来声明指针变量。指针变量的初始化可以为其赋值为另一个变量的地址,也可以将其初始化为NULL。 2.指针的运算 指针可以进行加、减、自增、自减等运算。指针加上一个整数n时,指向的地址会增加n个存储单元的大小,减去一个整数n时,指向的地址会减少n个存储单元的大小。 3.指针的比较 指针可以进行相等、大于、小于等比较运算。当两个指针指向同一个变量时,它们相等;当两个指针指向同一数组的不同元素时,它们可以进行大小比较。 4.指针的类型转换 指针可以进行类型转换,但需要注意转换后的指针类型必须与指向的变量类型相同,否则可能会导致程序出错。 5.指针和数组 数组名本身就是一个指针,指向数组的第一个元素。可以使用指针来访问数组的元素,也可以将指针作为函数参数来传递数组。 以下是一个例子,演示了指针的定义、初始化、运算和比较: ```c #include <stdio.h> int main() { int a = 10; int *p = &a; // 定义指向整型变量a的指针p printf("a的值为:%d\n", a); // 输出:a的值为:10 printf("p指向的变量的值为:%d\n", *p); // 输出:p指向的变量的值为:10 printf("p的值为:%p\n", p); // 输出:p的值为:0x7ffeeb5f8a2c printf("p+1的值为:%p\n", p+1); // 输出:p+1的值为:0x7ffeeb5f8a30 printf("p的地址为:%p\n", &p); // 输出:p的地址为:0x7ffeeb5f8a28 printf("p和&a的比较结果为:%d\n", p == &a); // 输出:p和&a的比较结果为:1 return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值