相关疑难解决方法(0)

什么是0.5 ++的c

我对以下代码片段有疑问

float func(float x, float y)
{ 
 return x*0.5 + y;
}
int main()
{
 float x = 0.5;
 if (x = func(x, x++))
 {
  printf("%f\n", x);
 }   
}
Run Code Online (Sandbox Code Playgroud)

上面代码的答案是1.250000.在函数调用中,x ++表示0.5 ++.函数传递1.0到x ++参数.我想知道0.5 ++是什么意思?为什么它再添加0.5而不是添加1.0?请帮我

c

-4
推荐指数
2
解决办法
208
查看次数

i++ + ++i 是怎么回事?

所以我一直在读一本 C++14 书(这是我图书馆最新的一本),尽管我比它深了大约 100-200 页,但有些东西一直在我的脑海中游动,但在某些时候它提到了这一点打脸:

i++ + ++i;
Run Code Online (Sandbox Code Playgroud)

它说不要这样做,但我还是这样做了。在 Visual Studio C++ 和在线 C++ 编译器(特别是 onlinegdb)中,它给我3when int i = 1;,但是当我分配 时i = i++ + ++i;,在线编译器给我4,Visual Studio 给我5......让我们看看, ifi++递增i但 是原始值,并且++i递增i和是新的和改进的 i,那么如果int i = 1;,我们会这样做:

1 + 2;
Run Code Online (Sandbox Code Playgroud)

并且i会是3!两个编译器都这么说。 i = i++ + ++i;给出了不同的答案!我希望我可以验证这一点,但我无法在脑海中计算分配和增量。也许这就是编译器正在做的事情,一个在表达式中分配然后递增,另一个则做相反的事情。PEMDAS 与 PEDMAS 的精神对比。

所以我知道这是未定义行为的字面教科书示例,但无论如何我都会问一个问题:在实践中是否有未定义行为 的使用,是否有充分的理由使用这段特定的代码(可能没有)因为它的可怕性质),关于这段代码(及其交易)还有什么需要注意的吗?

c c++ undefined-behavior

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

为什么这个程序输出4而不是3?

int main()
{
   int var = 1;
   var += ++var;
   cout<<var;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

在Java中,这将按预期输出3,但在C++(上面)中输出4.为什么?

c++

-5
推荐指数
1
解决办法
97
查看次数

#define SQR(x)(x*x)的答案不正确

以下程序正在打印 49

#include <stdio.h> 
#define SQR(x) (x*x) 
void main(void) { 
    int x, y; x = 5; 
    y = SQR(++x); 
    printf("y is %d\n", y); 
}
Run Code Online (Sandbox Code Playgroud)

我不明白我错过了什么.
这里就是我理解它是如何可能是工作
SQR(++x), ++x将被评估为6之后x*x36应退还.
因此y = 36
,答案是49

c

-5
推荐指数
1
解决办法
345
查看次数

为什么 i=i++ 时 i 的值不增加;陈述?

代码:

for(int i=0;i<5;){
  i=i++;
  printf("%d",i);
}
Run Code Online (Sandbox Code Playgroud)

上面的程序无限打印零,这怎么可能?有声明i=i++;。请解释为什么 的值i不增加。

c language-concepts post-increment

-5
推荐指数
1
解决办法
151
查看次数

C代码,其中我有一个整数变量的值,在预增量操作后我需要得到输出

i=2;

i= ++i + ++i + ++i;

printf(i)
Run Code Online (Sandbox Code Playgroud)

请给出输出说明吗?
我得到的答案是12但它应该是13.

c pre-increment

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

c中的分号和逗号

为什么这些程序有效,为什么我没有出现"分号丢失"错误?有了这个问题,我想问一下,当我可以跳过分号.据我所知,分号是句子终止符.在我们使用逗号而不是分号的情况下编写这些类型的语句是否正确.在program1中有一个否定然后打印然后getchar()在一行中没有分号和使用逗号.类似地,在程序2中使用了否定赋值,printf和getchar().我们可以使用逗号写多少行而不使用分号.

程序1:

#include <stdio.h>
int main()
{
   int i = 0xAA;
   ~i, printf("%X\n", i),getchar();
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

计划2:

#include <stdio.h>
int main()
{
   int i = 0xAA;
   i=~i, printf("%X\n", i),getchar();
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

c

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

前后增量中的java vs C++

为什么Java输出50时C++输出51相同的代码概念?

int i=5;

i= (++i + ++i + ++i + ++i + ++i + i++);

print i
Run Code Online (Sandbox Code Playgroud)

Java的: 50

C++: 51

c++ java increment operator-keyword

-23
推荐指数
1
解决办法
453
查看次数