关于变量与自身自减的比较问题


#include
int main()
{
    int i=10;
    while(i==i--)
        printf("哈哈\n");
    printf("呵呵\n");
    return 0;
}

img

请问是不是因为变量自身不能与自身自增自减比较才导致不能一直打印哈哈

while(i==i--)
这是C语言未定义行为,你多试几个不同的编译器,会发现结果不同。

i==i--在同一个表达式中多次修改它的值是未定义的行为,改成i-- > 0吧,或者按你需求

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7785147
  • 你也可以参考下这篇文章:使用指针方法实现字符串逆序存放后再输出;用指针方法编写一函数,实现两个字符串的比较
  • 除此之外, 这篇博客: 数据结构——线性表的顺序存储结构简单输出代码中的 在定义一个线性表的顺序存储类型时,需要定义一个数组来存储线线表中的所有元素和定义一个整型变量来存储线性表的长度。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #include<stdio.h>
    #include<stdlib.h>								//头文件 
    #define MaxSize 60								//线性表存储空间的大小 
    typedef char ElemType;							//自定义类型语句 
    typedef struct{									//线性表的顺序存储表示 
    	ElemType data[MaxSize];						//存储线性中的元素 
    	int length;									//存放线性表的长度 
    }SqList;										//线性表顺序存储结构类型名 
    void CreatList_Sq(SqList *&L,ElemType a[],int n)
    {
    	int i;
    	L=(SqList *)malloc(sizeof(SqList));			//分配存放线性的空间 
    	for(i=0;i<n;i++)
    		L->data[i]=a[i];
    	L->length=n;								//令线性表L的长度为n 
    } 
    /*bool ListEmpty(SqList *L)						//判断是否为空表 
    {
        return(L->length==0);
    }*/
    void DispList(SqList *L)						//输出线性表 
    { int i;
        /*if (ListEmpty(L)) 
    	return;*/ 
        for (i=0;i<L->length;i++)
            printf("%d",L->data[i]);
        printf("\n");
     } 
    int main()
    {
    	SqList *L;
    	ElemType a[]={1,2,3,4,5,6,7,8};
    	CreatList_Sq(L,a,8);
    	printf("L:");
    	DispList(L); 
    	return 0;
    } 


     

  • 您还可以看一下 郑逊敏老师的抖音短视频手机剪辑剪映基础教程课程中的 视频比例调节和设置专属背景小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^