C语言问题两个

来源:百度知道 编辑:UC知道 时间:2024/07/05 04:10:57
1
#include<stdio.h>
#define SS(a) (a*a-1)*a
void main()
{
int x=5,y=0;
y=++SS(x-2);
printf("%d\n",y);
}
有错误吗 有的话哪里?
2 可以给指针变量赋一个整数 但是不能赋浮点数
这句话对吗 错吗 为什么
第一个为什么错了??

错了,自增只能用于变量,对于常量不适用,SS(x-2)是一个常量来的,所以,程序错了!错了,指针变量存放的是地址来的,不是一个数或者字符,所以不能把指针变量赋值一个整数,要赋值给这个指针变量,只能是把地址该整数的地址赋给该指针变量,还有就是如果是要把浮点数的地址赋值给指针变量的话,要定义该指针变量的基类型为浮点数类型,如:
float a;
float *p;
第二行的float就是该指针变量的基类型,指针变量的基类型用来指定该指针变量可以指向的变量的类型,也就是说基类型为浮点型的只能赋值给浮点型的,而不能赋值给其他类型的!

1. y=++SS(x-2); 有错误。去掉++的结果是-42.

2.是对的

#define SS(a) (a*a-1)*a 处有错误