c语言aka
1. c语言出错invalid operands to binary %
pow()函数是一个形参和返回值都 加float类型的函数 怎么能%呢
2. invalid conversion from 'int' to '在C语言中是什么意思
在调用函数的时候传递的是int类型的数据,但那个函数定义的参数类型不是int(比如是结构或者指针或者数组)。
#include
#include"stdlib.h"
int main()
{
int i,j,k;
int *q;
q=(int*)malloc(sizeof(int));
scanf("%d %d %d",&i,&j,&k);
if(i>j)
{
if(i>k)
*q=i;
else
*q=k;
}
else
q=&j;
printf("%d",*q);
return 0;
system("pause");
}
这样就行了。
(2)c语言aka扩展阅读:
注意事项
1、int 是整型,float是浮点型,double是精度较float大的浮点型,char是字符型,long是长整型,printf是一个输出信息的库函数,include是在要在一个文件里包含另一个文件时要用的关键字,math是一个库的名称。
2、指针与变量不能直接赋值,只有(*q)才能和变量进行赋值,并且必须先给指针分配内存空间,所以直接把q=i编程(*q)=i是不行的。
3. 关于指针的c语言问题,invalid operands to binary +(have ‘float' and ‘const float *'
我给你改了第一个循环的东西,你看看有什么变化
#include <stdio.h>
#define MONTHS 12
#define YEARS 5
int main (void)
{
// 把数组初始化为年到2004年的降水量数据
float rain[YEARS][MONTHS] = {
{4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6},
{8.5, 8.2, 1.2, 1.6, 2.4, 0.0, 5.2, 0.9, 0.3, 0.9, 1.4, 7.3},
{9.1, 8.5, 6.7, 4.3, 2.1, 0.8, 0.2, 0.2, 1.1, 2.3, 6.1, 8.4},
{7.2, 9.9, 8.4, 3.3, 1.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 6.2},
{7.6, 5.6, 3.8, 2.8, 3.8, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 5.2}
};
int year, month;
float subtot, total;
float (*ptf)[MONTHS];
printf (" YEAR RAINFALL (inches) \n");
for (year = 0, total = 0; year < YEARS; year++)
{
for (month = 0, subtot = 0, ptf = rain; month < MONTHS; month++)
subtot += *(*(rain + year) + month);
printf ("%5d %15.1f\n", 2000 + year, subtot);
total += subtot; // 所有年度的总降水量
}
printf ("\nThe yearly average is %.1f inches.\n\n", total/YEARS);
printf ("MONTHLY AVERAGES: \n\n");
printf (" Jan Feb Mar Apr May Jun Jul Aug Sep Oct ");
printf (" Nov Dec\n");
/*for (month = 0; month < MONTHS; month++)
{
for (year = 0, subtot = 0, ptf = rain; year < YEARS; year++)
subtot += *(rain + year * MONTHS + month);
printf ("%4.1f ", subtot / YEARS);
}
printf ("\n");*/
return 0;
}
有两点你要注意
(1)指针和二维数组怎么对应
(2)二维数组用指针怎么访问
4. c语言数据结构
#include <stdlib.h>
#include <iostream>
#define OK 1
#define MVNum 100
typedef int Status;
typedef char VerTexType;
typedef int ArcType;
struct closedgestruct
{
源VerTexType adjvex; //最小边的顶点ArcType
ArcType lowcost; //最小边的权值
}closedge[MVNum];
Status Min()
{
int x,N,min=closedge[1].lowcost;
for(x=1;x<=MVNum;x++)
{
if(min>closedge[x].lowcost)
min=closedge[x].lowcost;//找closedge数组中权值最小的那组
N=x;//N保存权值最小的那组的下标
}
std::cout<<N;//输出最小权值对应的那组数组的下标
return OK;
}
5. C语言编译提示“invalid type argument of `unary *'”
将代码#defineCopyMMCtoMem(a,b,c,d,e) (((int(*)(int, uint, ushort, uint *, int))
(*((uint *)(0x0c004000 + 0x8))))(a,b,c,d,e))改为:
#defineCopyMMCtoMem(a,b,c,d,e) (((int(*)(int, uint, ushort, uint *, int))
(*((int *)(0x0c004000 + 0x8))))((a),(b),(c),(d),(e)))
(5)c语言aka扩展阅读:
C语言iscntrl()函数:判断一个字符是否为控制字符
C语言isalpha()函数:判断一个字符是否是字母
C语言isalnum()函数:判断一个字符是否是字母或者数字
C语言pow()函数:求x的y次方的值
C语言frexp()函数:提取浮点数的尾数和指数部分
double exp(double x) 返回指数函数ex的值
doublefrexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中
6. 在C++中这个错误是什么意思
在C++中不强调使用前数据须初始化会造成很多程序问题甚至是隐藏的隐患,所以是不安全的,而在C#中有自动监测是否使用了未初始化的变量,所以,C#称为安全的语言。
很明显你在使用结构前没有对变量初始化就直接调用,从以上你的代码看J没有声明就使用
[错误] 不能通过 '...' 通过 'std::string {aka 结构 std::basic_string <char>}' 非琐细地复制类型的对象
7. C语言里的 [Warning] assignment from incompatible pointer type 是什么意思啊
指针类型的赋值。
不同的编译器,对于不同类型间的指针变量进行赋值的编译检查是不一样的,有的报警告,有的报错误。
例如:
intmain()
{
chara[3][6]={"hello","world"};
char*p;
p=a;
printf("%c ",*p);//输出h
return0;
}
在devC++工具下编译通过,报警告:[Warning] assignment from incompatible pointer type
在VC6工具下,编译出错报错误:error C2440: '=' : cannot convert from 'char [3][6]' to 'char *' Types pointed to are unrelated; conversion requiresreinterpret_cast, C-style cast or function-style cast
(7)c语言aka扩展阅读:
warning: initialization from incompatible pointer type 分析
在字符驱动中,这行代码报了警告信息:
warning: initialization from incompatible pointer type
static ssize_t s3c2440_key_read(struct file *filp, char __user *buf, ssize_t count, loff_t *ppos);
经分析是因为函数声明与函数的原型不符,将其中的:
ssize_t count
改成:
size_t count
就可以了。
同样static void s3c2440_key_release(struct inode *inode, struct file *filp);
将其中的:
void
改成:
int
就可以了。