gpt4 book ai didi

c - VS2013遇到一些问题

转载 作者:行者123 更新时间:2023-11-30 15:28:23 26 4
gpt4 key购买 nike

我刚刚从vc6++切换到vs2013,发现它们之间有很多差异。就像使用 scanf_s 代替 scanf、cmath 代替 math.h getch -> _getch

还有其他我应该注意的主要区别吗?

顺便问一下,这是什么意思?“错误 C2668:‘pow’:对重载的调用不明确”

这是我的代码,这是一个简单的加密程序

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<math.h>
int encode1(int d,int n);
int encode2(int d,int n);
int encode3(int d,int n);
int decode1(int d,int n);
int decode2(int d,int n);
int decode3(int d,int n);
int main(void)
{
char ans, exit;//Used to exit the program
puts("Program starts");
int d = 0, n, temp;
char s;
unsigned number;
printf("Please choose one of the followings \n");
printf("1)Encrypting\t2)Decrypting(q to quit)\n");
scanf("%d",&number);
while (number!= 1 && number != 'q'&& number != 2)
{
printf("Wrong choice, retry\n");
number = getchar();
}
if(number!='q')
{
printf("Please type in the digit of your password\n");
scanf("%d", &n);
getchar();
}
switch (number)
{
case 1: temp = encode1(d, n);
printf("%d\n", temp);
break;
case 2: temp = decode1(d, n);
printf("%d\n", temp);
break;
default:break;
}
puts("Press any key to continue");
exit = _getch();
puts("Program ends");
return 0;
}
int encode1(int d, int n)
{
int b, c[100], i, j, t, r, e[100];
puts("Please type in your password to generated the key(integers only)");
scanf("%d", &b);
for (i = 0; i<n+1; i++)
{
c[i] = b % 8;
b = b / 8;
}
for (i = 0; i<n+1; i++)
{
d = d * 10 + c[i];
}
r = encode2(d,n);
return r;
}
int encode2(int b, int n)
{
int c[100], i, j, t, r, d = 0;
for (i = 0; i<n+2; i++)
{
c[i] = b % 8;
b = b / 8;
}
for (i = 0; i<n+2; i++)
{
d = d * 10 + c[i];
}
r = encode3(d,n);
return r;
}
int encode3(int b, int n)
{
int c[100], i, j, t, r, d = 0;
for (i = 0; i<n+3; i++)
{
c[i] = b % 8;
b = b / 8;
}
for (i = 0; i<n+3; i++)
{
d = d * 10 + c[i];
}
return d;
}
int decode1(int d, int n)
{
puts("Type in the key to retrieve your password");
scanf("%d", &d);
int a[100], t, x;
int c[100], i, j, e[100], k, g, u = 0, r;
for (i = 0, j = n+3; i<n+3, j>0; j--, i++)
{
k = pow(10, j);
e[i] = d / (k);
}
for (i = 0, j = n+2; j >= 0, i<n+3; i++, j--)
{
g = pow(10, j + 1);
k = pow(10, j);
c[i] = (d - e[i] * g) / k;
}
for (i = 0, j = n+2; i<n+3, j >= 0; i++, j--)
{
t = c[j];
a[i] = t;
}
for (i = 0, j = n+2; i<n+3, j >= 0; i++, j--)
{
r = pow(8, j);
u += a[i] * r;
}
x = decode2(u,n);
return x;
}
int decode2(int d, int n)
{
int a[100], t;
int c[100], i, j, e[100], k, g, u = 0, r, x;
for (i = 0, j = n+2; i<n+2, j>0; j--, i++)
{
k = pow(10, j);
e[i] = d / (k);
}
for (i = 0, j = n+1; j >= 0, i<n+2; i++, j--)
{
g = pow(10, j + 1);
k = pow(10, j);
c[i] = (d - e[i] * g) / k;
}
for (i = 0, j = n+1; i<n+2, j >= 0; i++, j--)
{
t = c[j];
a[i] = t;
}
for (i = 0, j = n+1; i<n+2, j >= 0; i++, j--)
{
r = pow(8, j);
u += a[i] * r;
}
x = decode3(u,n);
return x;
}
int decode3(int d, int n)
{
int a[100], t;
int c[100], i, j, e[100], k, g, u = 0, r, x;
for (i = 0, j = n+1; i<n+1, j>0; j--, i++)
{
k = pow(10, j);
e[i] = d / (k);
}
for (i = 0, j = n; j >= 0, i<n+1; i++, j--)
{
g = pow(10, j + 1);
k = pow(10, j);
c[i] = (d - e[i] * g) / k;
}
for (i = 0, j = n; i<n+1, j >= 0; i++, j--)
{
t = c[j];
a[i] = t;
}
for (i = 0, j = n; i<n+1, j >= 0; i++, j--)
{
r = pow(8, j);
u += a[i] * r;
}
return u;
}

最佳答案

您为什么不发布出现该错误的代码?只是猜测,代码中的某些内容如下所示:

int a = 1;
int b = 2;
double result = pow(a, b);

问题是传递给 pow 的两个参数都是 int,但 中没有 pow 的重载math.h 需要两个 int。编译器告诉您它在重载中遇到了麻烦,因为在这种情况下最佳可行函数不是唯一的。

您可以通过将第一个参数转换为合适的类型来解决此问题,例如double:

double result = pow((double)a, b);

更一般地说,由于有很多变化,如果您可以缩小问题的范围,那就太好了。您是否还计划转换旧版 MFC 代码?

但是,请发布您的错误,我最近升级了几个旧项目,因此我可能可以帮助您。

关于c - VS2013遇到一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26599194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com