转义字符
例题一
int main()
{
char s[] = "012xy\08s34f4w2";
int i, n = 0;
for (i = 0; s[i] != 0; i++)
{
if (s[i] >= '0' && s[i] <= '9')
{
n++;
}
}
printf("n=%d\n", n);
}
输出:
——
n=3
——
例题二
int main()
{
char s[] = "\01234";
for (int i = 0; s[i]; i++)
{
printf("1");
printf("%c\n", s[i]);
}
}
输出:
——
1
13
14
——
总结:
八进制值的判断取决于后续是否为合法的八进制。
以\开始,最少1位,最多3位,且必须是合法的8进制数字,即0~7,如”\012″。
例:在”\08″中,’\0’为结束符。
自增与自减
例题一
int main()
{
int k = 5, n = 4;
while (k--)
{
printf("%d\n", k -= 1);
}
printf("---------\n");
while (--n)
{
printf("%d\n", --n);
}
}
输出:
——
死循环
——
总结:
自增与自减也同样应用在循环体判断里,后置–时先根据当前值进行判断,是否进入循环体,再改变自身的值,最后执行循环体语句。
例题二
int main()
{
int a = 0;
printf("%d %d %d %d", ++a, a, a++, ++a, a);
}
输出:
——
3 3 1 3
——
总结:
在C语言中有个很常用的函数printf,使用时从右向左压栈,依次从右向左开始计算,计算完后才会往%d中输出,因为有多条赋值语句,所以它是个累加过程,直到压栈结束后输出最终得累加值,而遇到a++这种先使用再变化的量则优先输出。
参考:
https://blog.csdn.net/weixin_43919932/article/details/88544728
问:
#include <stdio.h>
main()
{
char a[] = "abc", *t;
int m = 3, j = 0;
while (j < m)
{
t[j] = a[j++];
// j++;
printf("%d\n", j);
printf("%c, %c\n", t[j], a[j]);
}
printf("%s\n", t);
printf("%d\n", j);
t[j] = 0;
printf("%s", t);
}
输出:
——
a, b
1
b, c
2
c,
3
abc
3
ab
——
疑问:
为什么t[j]的索引j的值在a[j++]之后没有改变?
指针
例题一
main()
{
int m = 0;
int *n = &m;
printf("value:%d\taddress:%d\n", m, &m);
*n += 1;
printf("value:%d\taddress:%d\n", *n, n);
*n++;
printf("value:%d\taddress:%d\n", *n, n);
}
输出:
——
value:0 address:6422036
value:1 address:6422036
value:6422040 address:6422040
——
总结:
因为后置 ++ 运算符的优先级高于 * ,所以在编译器的语句实际上是:*(n++);
问:浮点数
例题一
float fun(float h)
{
return (int)(h * 100) / 100.0;
}
main()
{
printf("%f\n", fun(22.223000));
printf("%f", (int)(22.223000 * 100) / 100.0);
}
输出:
——
22.219999
22.220000
——
疑问:
为什么相同的操作,使用函数进行封装后导致了精度缺失
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容