小编Dee*_*epu的帖子

C中函数调用操作符的相关性

我正在讨论C运营商的关联性话题.

在那里我遇到了这个事实,函数调用操作符()具有从左到右的关联性.但是,当表达式中出现相同优先级的多个运算符时,关联性才会发挥作用.但我找不到涉及函数调用运算符的任何示例,其中关联性起着至关重要的作用.

例如,在语句中a = f(x) + g(x);,结果取决于评估顺序,而不取决于两个函数调用的关联性.类似地,调用f(g(x))g()首先评估函数,然后是函数f().这里我们有一个嵌套的函数调用,并且再次关联不起任何作用.

此优先级组中的其他C运算符是数组下标[],postfix ++postfix --.但我找不到任何涉及这些运算符组合的例子,()其中关联性在表达式评估中起作用.

所以我的问题是函数调用的关联性是否从左到右定义影响C中的任何表达式?任何人都可以提供一个示例,其中函数调用运算符的关联性()在表达式求值中是否重要?

c associativity

31
推荐指数
2
解决办法
2541
查看次数

用C语言中的++运算符对语句进行短路评估

我在Windows 7上的Code :: Blocks 10.05中执行了以下代码.

int a=0,b=0,c;
c=a++&&b++;
printf("\na=%d\nb=%d\nc=%d\n\n",a,b,c);
Run Code Online (Sandbox Code Playgroud)

我获得的输出如下,

a=1
b=0
c=0
Run Code Online (Sandbox Code Playgroud)

由于短路评估,这非常有意义.

表达式a++是后递增的,0并返回到逻辑和(&&).因此,部分b++不评估,因为两个0 && 00 && 1的计算结果为0.

但这引起了我的怀疑.运营商的优先价值清楚地表明,++优先级高于&&.所以我的理解是这样的,a++并且b ++都被评估,然后&&只检查表达式的结果a++来做出决定.但这并没有发生,只是a++在这里评估.

这种行为的原因是什么?是否&&是一个顺序点事做这种行为?如果是这样,为什么我们说&&优先级低于++

c operator-precedence short-circuiting

15
推荐指数
1
解决办法
1206
查看次数

linux中进程的堆栈大小是否有限制

stack进程的大小是否有限制Linux?它只是依赖于RAM机器吗?我想知道这一点,以限制函数的递归调用的深度.

谢谢.

c c++ linux

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

访问C中的特定内存位置

在汇编语言中,我们有类似的说明

movl ax, [1000]
Run Code Online (Sandbox Code Playgroud)

这允许我们访问特定的内存位置.

但在C中我们可以做类似的事吗?

当然我知道使用asm()的内联汇编代码将允许你这样做.

但我想了解一些C特定技术来实现这一目标.

我尝试了以下代码并得到了分段错误

int *ptr=0xFE1DB124;
*ptr;
Run Code Online (Sandbox Code Playgroud)

由于下面给出的代码识别出内存位置,这再次令人困惑,

int var;
printf("\nThe Address is %x",&var);
Run Code Online (Sandbox Code Playgroud)

所以内存位置可用,但我仍然得到分段错误.

c assembly

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

如何在C中运行外部程序?

如何在C中运行外部程序?对于像一个示例应用程序browser,word,Notepad等还有我怎么可以将外部应用程序的窗口一定规模?例如,300 X 300像素的窗口大小.

c winapi

9
推荐指数
2
解决办法
1万
查看次数

Python中的全局名称

我想知道两个数字N1N2是否是相同数字的排列.例如,123并且321是相同数字的排列,其中as 234123not.我用Python来解决我不是专家的问题.我使用IDLE Python GUIWindows 7.规格是Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32.

Python代码如下所示,

def k(n, m):
    s1 = n
    s2 = m
    k = 0
    fl = 0
    while k < 10 :
        arr1[k] = 0
        arr2[k] = 0
        k = k + 1
    while s1 > 0 :
        t = s1 % 10
        arr1[t] = 1 …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

7
推荐指数
1
解决办法
6402
查看次数

C中递增/递减算子的必要性

我怀疑Increment/Decrement运算符(++--)在C(也在)中的用法C++.它是绝对必要的使用++,并--在节目?例如,考虑下面给出的代码,

int x=10;
x++; 
Run Code Online (Sandbox Code Playgroud)

这可以很容易地替换如下,

int x=10;
x=x+1;
Run Code Online (Sandbox Code Playgroud)

因此,它是需要使用++--在实际编程?我是出于特殊原因问这个问题.在我看来,他们是在最混乱的运营商之一C,形成了类似表述*x++,++*x,x++ + ++x等,每天造成几千人的错误.

当然,我知道可以++在大会指令之间进行直接映射INCR.但我相信,任何像样的编译器优化可以取代一些能力x=x+1INCR x.

所以简而言之,我的问题是" 是否存在x = x + 1无法取代x ++的情况? ".

如果有人可以提供一段在没有++或没有的情况下无法工作的代码,这可能会非常有用--.

有什么建议?谢谢.

c c++

6
推荐指数
1
解决办法
448
查看次数

C,从单输入线读取多个数字(scanf?)

我在C中编写了一个应用程序,它需要输入两行.第一个输入表示int数组的大小,第二个输入包含由空格分隔的值.例如,以下输入

5
1 2 3 4 99
Run Code Online (Sandbox Code Playgroud)

应该创建一个包含的数组 {1,2,3,4,99}

最快的方法是什么?我的问题是读取多个数字而不循环遍历整个字符串检查它是空格还是数字?

谢谢.

c scanf c99

5
推荐指数
1
解决办法
4万
查看次数

如何将int映射到C/C++中的相应字符串

我有20位数字,我想将它们与字符串相关联.除了使用switch case语句实现这一点之外,还有更快的方法吗?

我需要将int转换为相应的字符串,并且数字不一定是打包的.一些代码Qt也可能有用吗?

示例:以下数字和字符串相互关联,

1:   "Request System Info"

2:   "Change System Info"

10:  "Unkown Error"
Run Code Online (Sandbox Code Playgroud)

c c++ qt

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

在Objective C/Cocoa Touch中将浮点向下舍入到最接近的0.5

我想将一个浮点数向下舍入,这样我就可以得到0.5到7之间的任何值(任意小数位数),同时舍入任何低于0.5到0.5的值.

例如,

0.1, 0.11442, 0.46 would all be 0.5.
1.1, 1.43, 1.35 would all be 1.
1.56, 1.6, 1.8 would all be 1.5.
Run Code Online (Sandbox Code Playgroud)

超过5的任何一个将向下舍入到5.

我想要的最终数据集是0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5.

我不知道任何向下舍入的函数Objective C,而不是整数.

c cocoa-touch objective-c

4
推荐指数
1
解决办法
4396
查看次数