c语言:为啥不是i=2 p=-1啊 i,i++就相当于a=2 b=3呀然后b大于a则p等于-1
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言:为啥不是i=2 p=-1啊 i,i++就相当于a=2 b=3呀然后b大于a则p等于-1相关的知识,希望对你有一定的参考价值。
参考技术A正确结果应该是i=3,p=0才对。
为什么你的编译器会显示p=10我也很奇怪,可能是编译器自身的问题。
首先要明白++i是先执行自加,再把值赋给i。
程序中运行到p=fun(i,++i)这一步时,不是p=fun(2,3),而是p=fun(3,3)
因为++i的存在,i必须是先自加的。所以p的值是为0的,i的值为3.
C语言程序错误 为啥OXFFFFFF的内存不能written 编译没有问题啊 请问为啥啊
#include<stdio.h>
void main()
int num = 0, space = 0, alpha = 0, other = 0;
int i = 0;
char ch[100];
while(ch[i] != '\n')
scanf("%c",ch[i]);
++i;
if(ch[i] >='A' && ch[i] <= 'z')
alpha++;
else if(ch[i] >='0' && ch[i] <= '9')
num++;
else if(ch[i] == ' ')
space++;
else other++;
printf("空格有%d个,数字有%d个,字母有%d个,其他有%d个",space,num,alpha,other);
之后立马++i;
下面在判断chi[i],这个时候根本就不是你输入的那个字符了,指向了后面一个地址里面的字符,是随机的。然后你会一直往后面输入,那个while的判断条件一直不成熟,会造成内存覆盖 参考技术A #include<stdio.h>
#include <stdlib.h>
void main()
int num = 0, space = 0, alpha = 0, other = 0;
int i = 0;
char ch[100];
memset(ch,0,100);
scanf("%s",ch);
while(ch[i])
if(ch[i] >='A' && ch[i] <= 'z')
alpha++;
else if(ch[i] >='0' && ch[i] <= '9')
num++;
else if(ch[i] == ' ')
space++;
else other++;
i++;
printf("空格有%d个,数字有%d个,字母有%d个,其他有%d个",space,num,alpha,other);
以上是关于c语言:为啥不是i=2 p=-1啊 i,i++就相当于a=2 b=3呀然后b大于a则p等于-1的主要内容,如果未能解决你的问题,请参考以下文章
C语言程序错误 为啥OXFFFFFF的内存不能written 编译没有问题啊 请问为啥啊
C语言中,为啥这样的代码编译时出错i undeclared(first use in this function),
int a[3] = 1,2,3; int*p, *q; p = a; q = &a[2]; int i = q-p;为何i的结果为1而不是8,C语言的规定?