是 x=;而if(d<)在c语言中使用无效

Is x=; and if(d<) invalid to use in c language

本题最后有c语言的中点画圆算法。看到代码中有如下两条语句

x=;

if(d<);

在线程序和我们的书中也有,所以基本上我认为编译器可能会自动将它们初始化为 0(零),所以我在作业中编写了相同的代码。但是老师说这是错误的,确实它在 Turbo C++ 编译器中给出了 Invalid Expression。所以我想知道是不是错了,为什么到处都是这样写。

代码如下:

#include<graphics.h>
#include<conio.h>
#include<stdio.h>

void main() {
   int gd=DETECT,gm;
   int i,r,x,y,xc,yc;
   float d;

   clrscr();

   initgraph(&gd,&gm,"c:\tc\");

   printf("Enter Radius\n");
   scanf("%d",&r);

   printf("Enter Center of circle\n");
   scanf("%d",&xc);
   scanf("%d",&yc);

   d=1.25-r;
   x=;
   y=r;
   do {
        if(d<) {
            x=x+1;
            d=d+2*x+1;
        }  else {
               x=x+1;
               y=y-1;
              d=d+2*x-2*y+10;
       }
       putpixel(xc+x,yc+y,5);
       putpixel(xc-y,yc-x,5);
       putpixel(xc+y,yc-x,5);
       putpixel(xc-y,yc+x,5);
       putpixel(xc+y,yc+x,5);
       putpixel(xc-x,yc-y,5);
       putpixel(xc+x,yc-y,5);
       putpixel(xc-x,yc+y,5);
    } while(x<y);
    getch();
}

也是上面代码的link:

Mid Point Circle Drawing Algorithm Code in c Language

请帮帮我。谢谢

不,这些表达式在语法上无效。

书籍有拼写错误,fishy-looking 在线书籍的复制品也有拼写错误。那个图像看起来像细胞 phone 照片什么的,真的很可疑。

网上说的不一定是真的1.

1 网上一位匿名陌生人说。 :)

您提供的link上的代码明显被篡改了

正确的代码在这里:

#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <math.h>

void main()
{
  int gd = DETECT, gm;
  int r, x, y, p, xc = 320, yc = 240;

  initgraph(&gd, &gm, "C:\TC\BGI");
  cleardevice();    

  printf("Enter the radius ");
  scanf("%d", &r);    

  x = 0;
  y = r;
  putpixel(xc + x, yc - y, 1);

  p = 3 - (2 * r);

  for (x = 0; x <= y; x++)
  {
    if (p<0)
    {
      y = y;
      p = (p + (4 * x) + 6);
    }
    else
    {
      y = y - 1;    
      p = p + ((4 * (x - y) + 10));
    }

    putpixel(xc + x, yc - y, 1);
    putpixel(xc - x, yc - y, 2);
    putpixel(xc + x, yc + y, 3);
    putpixel(xc - x, yc + y, 4);
    putpixel(xc + y, yc - x, 5);
    putpixel(xc - y, yc - x, 6);
    putpixel(xc + y, yc + x, 7);
    putpixel(xc - y, yc + x, 8);    
  }

  getch();
  closegraph();
}

注意:此处的代码仅适用于古董 Turbo C。对于其他平台,需要进行调整。

问题什么是变量x的存储class?

ans. 局部变量,即块语句中使用的 var x(如您在 main() 中使用的那样)属于"AUTO" 在 C.

中存储 class

还有一个问题 :-
现在,您想到的问题是,自动变量初始化为**的默认值是多少??**

Ans. 初始化为“垃圾值”。

在 x 的声明中:-

int i,r,x,y,xc,yc;   

注:- x初始化为垃圾值.

但是你写,

x=;

注:-既不是声明也不是初始化语句, 但编译器无法理解 Incomplete statement,因此会给出错误:
无效表达式

现在,来到你的下一个疑问:-

if(d<);

它也是一个无效的表达式,因为如果您计算的话,只需考虑一般数学:- 如果 2 大于 ______??

你能想象空白space中的值吗?? 是的,你可以,但是,编译器(或计算机)不能:)