Tag: 变量

(K&R)至少内部名称的前31个字符是重要的?

从字面上看,它是有道理的,但它究竟是什么意思成为变量名的重要字符? 我是使用K&R开始学习C语言的人。 这是本书的直接引用: “至少内部名称的前31个字符是重要的。对于函数名称和外部变量,数字可能小于31,因为外部名称可能被汇编程序和加载程序使用,语言无法控制。对于外部名称,该标准仅保证6个字符和一个案例。“ 顺便说一下,“单一案例”是什么意思?

求解用户定义的变量方程

我非常感谢C,Python,C ++或Javascript中的答案。 我读了几本书,做了所有的例子。 现在我想写一个简单的程序。 但是,我已经遇到了以下障碍: 我的目的是从用户那里获取一个等式并将其保存在变量中,例如: -3*X+4 or pow(2,(sin(cos(x))/5)) > [In valid C Math syntax] 然后计算某个X值的给定表达式。 像这样的东西: printf(“%g”, UserFunction(3.2)) // Input 3.2 for X in User’s Function and Print Result 有任何想法吗? 对于我的生活,我无法弄清楚这一点。 令我沮丧的是,解决方案可能只是一个非常简单的解决方案。 先感谢您。

C中暂定定义背后的基本原理是什么?

考虑以下程序。 这会给出任何编译错误吗? #include int s=5; int s; int main(void) { printf(“%d”,s); } 乍一看似乎编译器会给出变量重定义错误,但程序根据C标准完全有效。 (请参阅http://ideone.com/Xyo5SY上的现场演示)。 暂定定义是没有存储类说明符且没有初始化程序的任何外部数据声明。 C99 6.9.2 / 2 对于具有文件范围而没有初始化程序且没有存储类指定程序或存储类指定静态的对象的标识声明构成了一个暂定的定义。 如果翻译单元包含一个或多个用于标识符的暂定定义,并且翻译单元不包含该标识符的外部定义,则该行为就像翻译单元包含该标识符的文件范围声明一样,其复合类型为翻译单元的结尾,初始化程序等于0。 我的问题是,允许暂定定义的理由是什么? 在C中有没有用过这个? 为什么C允许暂定?

如何使用C将带有2个变量的IF语句转换为开关函数?

我有一个IF语句,我想转换成一个Switch语句……但它有2个变量! 是否可以在C上进行? 这是一个摇滚,纸,剪刀游戏: (R代表岩石,P代表纸张,S代表剪刀) char play1, play2; printf(“\nPlayer 1 – Enter your Play: “); scanf (“%c”, &play1); printf(“\nPlayer 2 – Enter your Play: “); scanf (” %c”, &play2); if (play1 == ‘R’ && play2 == ‘P’) { printf (“Paper wins!”); } else if (play1 == ‘R’ && play2 == ‘S’) { printf (“Rock wins!”);} else […]

宏内的变量参数

我有两个函数foo1(a,b)&foo2(a,b,c)和一个宏 #define add(a,b) foo(a,b) 我需要重新定义宏来完成, 1.如果使用2个参数调用add(),则调用foo1 如果使用3个参数调用add(),则调用foo2 我是选项VA_ARGS的新手。 我怎样才能做到这一点

变量的声明如何表现?

#include #include int main(){ char i; int c; scanf(“%i”,&c); scanf(“%c”,&i);// catch the new line or character introduced before x number printf(“%i”,i);// value of that character getch(); return(0); } 程序将以与下一个变量声明相同的方式运行,而不是上述变量声明: 这个: int c; int *x; int i; 或这个: int *x; int c; int i; 并且只有这样: c变量和i变量之前的x指针。 我知道那些最后的声明没有意义, int i而不是char i ,以及一个甚至不需要的添加指针。 但这是偶然发生的,我想知道这是否只是一个巧合。

在C-still工作中未在for循环条件中声明的变量

我编写了下面的代码来查找C中所有数字的总和,当我编译并运行它时,它成功了。 但是,后来才意识到我没有在for循环的条件中为变量’ n ‘ 输入任何值 。 即使没有为条件变量赋值,我也很困惑这个程序是如何工作的。 我想澄清一下。 #include void main() { int no,a,b,n,sum=0; printf(“Enter the number to be added”); scanf(“%d”,&no); for(int i=0;i<n;i++) { a=no%10; b=no/10; sum=a+sum; no=b; } printf("The sum is %d",sum); }

浮点变量不符合条件(C)

我试图让用户输入介于1.00000到0.00001之间的数字,而边缘不包含在浮点变量中。 我可以假设用户在点后面没有输入超过5个数字。 现在,这是我写的: printf(“Enter required Leibniz gap.(Between 0.00001 to 1.00000)\n”); scanf(“%f”, &gap); while ((gap 0.99999)) { printf(“Enter required Leibniz gap.(Between 0.00001 to 1.00000)\n”); scanf(“%f”, &gap); } 现在,当我输入尽可能小的数字时:0.00002陷入了while循环。 当我运行调试器时,我看到0.00002与float变量中的值一起存储:1.99999995e-005任何人都可以为我澄清我做错了什么? 为什么0.00002不满足条件? 什么是“1.99999995e-005”的事情。

C结构初始化与变量

我遇到了C89之后似乎没有通过任何C标准解决的问题,除非提到结构初始化限制已被解除。 但是,我使用Open Watcom IDE(用于调试)遇到错误,其中编译器声明初始化程序必须是常量表达式。 这是正在发生的事情的要点。 typedef struct{ short x; short y; } POINT; void foo( short x, short y ) { POINT here = { x, y }; /* <– This is generating the error for the compiler */ /* … */ } 任何想法为什么,或什么标准不允许?

参数变量存储在内存中的哪个位置?

我正在用C编写一些代码,当遇到一个方法时,我想知道参数变量存储在内存中的哪个位置。 我知道以下内容: 全局变量 – >存储在静态代码部分 静态可变 – > 局部自动变量(内部方法) – >存储在堆栈中 本地静态变量 – >存储在堆栈中 本地const变量 – >存储在堆栈中 假设我的假设是正确的。 但是参数变量存储在哪里? ex:int *(int x,char * c); 谢谢! 编辑:我知道当我malloc的东西,它被放在堆上,但是说我取消引用指针以获取指针位置的值,是否也存储在堆中或者现在它是否在堆栈中?