小编hac*_*cks的帖子

pow()是否适用于C中的int数据类型?

我只是编写一个程序来计算整数的幂.但产量不如预期.除了5之外,它适用于所有整数.

我的代码是:

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

int main(void)
{
  int a,b;
  printf("Enter the number.");
  scanf("\n%d",&a);
  b=pow(a,2);
  printf("\n%d",b);
}
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

"Enter the number. 2
 4
"Enter the number. 5
 24
"Enter the number. 4
 16
"Enter the number. 10
 99
Run Code Online (Sandbox Code Playgroud)

我们不能使用pow()int数据类型的函数??

c exponentiation pow

14
推荐指数
1
解决办法
3万
查看次数

在K&R 2-1中解释此代码

我正在尝试确定各种浮点类型的范围.当我读到这段代码时:

#include <stdio.h>

main()
{
    float fl, fltest, last;
    double dbl, dbltest, dblast;

    fl = 0.0;
    fltest = 0.0;
    while (fl == 0.0) {
        last = fltest;
        fltest = fltest + 1111e28;
        fl = (fl + fltest) - fltest;
    }
    printf("Maximum range of float variable: %e\n", last);

    dbl = 0.0;
    dbltest = 0.0;
    while (dbl == 0.0) {
        dblast = dbltest;
        dbltest = dbltest + 1111e297;
        dbl = (dbl + dbltest) - dbltest;
    }
    printf("Maximum range of double variable: %e\n", …
Run Code Online (Sandbox Code Playgroud)

c floating-point range

13
推荐指数
1
解决办法
294
查看次数

传递可变大小的多维数组

我试图理解将多维数组传递给c中的函数的"最佳实践"(或实际上是任何实践).当然这取决于应用程序,因此我们考虑编写一个函数来打印可变大小的2D数组.特别是,我对如何printArry(__, int a, int b)在下面的代码中编写函数感兴趣.我省略了第一个参数,因为我不确定应该是什么.

void printArry(_____, int a, int b){
/* what goes here? */
}


int main(int argc, char** argv){

int a1=5;
int b1=6;
int a2=7;
int a2=8;

int arry1[a1][b1];
int arry2[a2][b2];

/* set values in arrays */

printArry(arry1, a1, b1);
printArry(arry2, a2, b2);

}
Run Code Online (Sandbox Code Playgroud)

c arrays pointers multidimensional-array variable-length-array

13
推荐指数
1
解决办法
1118
查看次数

调用后被调用函数如何返回其调用者?

我读到当程序进行函数调用时,被调用函数必须知道如何返回其调用者.

我的问题是:被调用函数如何知道如何返回其调用者?是否有通过编译器在幕后工作的机制?

c compiler-construction abi function-call stack-frame

12
推荐指数
2
解决办法
1391
查看次数

指针和指针变量之间有什么区别?

我知道这是非常基本的,但对我来说有点混乱.
我读了:

一个指针只不过是一个多地址,并且指针变量只是可变量存储地址.
当我们将变量的地址存储i在指针变量中时p,我们说它p 指向 i.

int i, *p = &i;
Run Code Online (Sandbox Code Playgroud)

p指向i.

为了访问指针指向的对象,我们使用*(间接)运算符.

如果p 是指针*p表示p当前指向的对象.

现在我很困惑,我应该调用什么p- 指针指针变量

附加:指针是否始终与地址相同?

c function-pointers

11
推荐指数
2
解决办法
4万
查看次数

为什么数组类型对象不可修改?

据说这里

术语可修改的左值用于强调左值允许指定的对象被改变以及被检查.以下对象类型是左值,但不是可修改的左值:

  • 数组类型
  • 不完整的类型
  • const限定类型
  • 结构或联合类型,其成员之一被限定为const类型

因为这些左值不可修改,所以它们不能出现在赋值语句的左侧.

为什么数组类型对象不可修改?写不正确

int i = 5, a[10] = {0};    
a[i] = 1;
Run Code Online (Sandbox Code Playgroud)


而且,什么是不完整的类型?

c arrays lvalue

11
推荐指数
2
解决办法
4158
查看次数

为什么在不可变的字符集可能的情况下不能使用一组不可变的整数?

char *str = "Hey baby";
Run Code Online (Sandbox Code Playgroud)

为字符串创建内存并指向str它.如果这是有效的,为什么不是以下内容:

int *x = {7, 0, 1};
Run Code Online (Sandbox Code Playgroud)

这应该做同样的事情,除了它们是ints而不是chars.

c string pointers integer char

11
推荐指数
1
解决办法
256
查看次数

变量名如何存储在C中?

我想问一下C变量是如何存储在C中的?

要更清楚地考虑以下代码:

int main() {
    int a = 1, b;
    b = a + 2;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

例如,在这里,存储器C存储可变位置的名称.

例如,如果&a=0x12A7(假设)&b=0x123B1,那么如何以及在何处存储变量名称,例如存储内存名称a

c compiler-construction

11
推荐指数
2
解决办法
958
查看次数

执行和评估之间有什么区别?

我们说表达"评估"值和语句命令计算机"执行".但对我来说,似乎是相同的术语.C中的执行和评估有什么区别?

c evaluation execution

11
推荐指数
3
解决办法
1978
查看次数

是否[] []和(*a)[]等效为函数参数?

功能原型

void foo(int n, int a[][]);
Run Code Online (Sandbox Code Playgroud)

给出了关于不完整类型的错误

void foo(int n, int (*a)[]);  
Run Code Online (Sandbox Code Playgroud)

编译.根据衰减规则int a[][]相当于int (*a)[]在这种情况下,因此也int (*a)[]应该给出关于不完整类型的错误,但GCC似乎接受它.有什么我想念的吗?这可能是一个GCC错误,但我没有发现任何与之相关的内容.

c arrays gcc function-parameter language-lawyer

11
推荐指数
2
解决办法
289
查看次数