c语言的自增,c语言的自增自减问题

dfnjsfkhak 12 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言的自增的问题,于是小编就整理了2个相关介绍c语言的自增的解答,让我们一起看看吧。

  1. c语言自增自减合法规则?
  2. c语言中怎么实现任意长度字符串输入?

c语言自增自减合法规则?

1、 自增运算符和自减运算符只能用于变量,而不能用于常亮或表达式,如6++或(a+b)++都是不合法的

2、 ++ 和—的结合方向均是“自右向左”。一般情况下算数运算符的结合方向为“自左向右”,如果有-i++,i的左面是负号运算符,右面是自加运算符。如果i的原值等于3,若按照左结合性,相当于(-i)++,而(-i)++是不合法的。

c语言的自增,c语言的自增自减问题-第1张图片-芜湖力博教育咨询公司
图片来源网络,侵删)

3、如果cout<<-i++<<endl;则先取i的值6,输出-i的值-6,然后i增加为7。而-(i++)是先用i的原值3加上负号输出-3,再对i加1,不要认为先加完1后再加负号,输出-4,这是不对的。

4、 自增(减)运算符常用于循环语句中,使循环变量自动加1;也用于指针变量,使指针变量指向下一个内存地址

c语言中怎么实现任意长度字符串输入

其实核心就是实现动态数组,无论字符串多长,都能够储存。

c语言的自增,c语言的自增自减问题-第2张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

用getchar一个一个得到字符,直到文件结束

核心代码实现:

int n=0,k=100; //初始化,字符串长度为0,字符串空间长度为100 char * s2 = NULL,s1 = (char *)malloc(100); //初始化字符串空间 if (s1 == NULL) return; //内存分配失败,返回 while((c=getchar())!=EOF){ //判断是否到文件结束,一个个读取字符 if(k<=n){ //当前字符串长度大于等于字符串空间长度时 k*=2; //长度增长2倍 s2 = (char *)realloc(s1,k); //重新分配内存 if(s2 == NULL){ //内存分配失败 free(s1); //释放已分配内存 return; }else{ //内存分配成功 s1=s2; } } s1[n++]=c; //字符串赋值字符 } s1[n]=0; //字符串末尾置为\0

c语言的自增,c语言的自增自减问题-第3张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

到此,以上就是小编对于c语言的自增的问题就介绍到这了,希望介绍关于c语言的自增的2点解答对大家有用

标签: 字符串 运算符 长度