相关疑难解决方法(0)

"Objective-C是C语言的超集比C++更严格"是什么意思?

从我在那里读到:为什么Objective-C在Apple社区之外不是很受欢迎?

Objective-C是C的超集(实际上比C++严格得多),因此不会出现向后兼容的问题.您可以在Objective-C中使用C语言执行的任何操作.

作为一个超集是二元的,就像怀孕一样.Obj-C是C的超集,而C++则不是.

超集是什么意思?Objective-C以什么方式更接近//向后兼容C?客观C以什么方式比C++更接近C哲学?

任何C程序都可以编译而不需要通过Objective-C编译器进行修改(100%兼容性)吗?

这是一个关于编程语言设计和兼容性的问题,而不是关于哪一个更好的战争.

c c++ objective-c

87
推荐指数
5
解决办法
8736
查看次数

在哪个版本的C++标准中,"(i + = 10)+ = 10"具有未定义的行为?

在C++中,以下是否有未定义的行为:

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

C和C++中+ =的结果的答案的评论中有一些争论这里的微妙之处在于默认响应似乎是"是",而正确的答案似乎是"它取决于C++标准的版本".

如果它确实取决于标准的版本,请解释UB的位置和不在的位置.

c++ undefined-behavior language-lawyer c++11 c++03

32
推荐指数
3
解决办法
1760
查看次数

这是如何评估的?

问这个问题我感觉非常愚蠢.但我不能自己找出原因.

int main()
{
    int target;
    int buffer =10;
    const int source = 15;
    target = (buffer+=source) = 20;
    cout << target+buffer;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

target = (buffer+=source) = 20;将成为target = (25) = 20.

但是如果我在源文件中给出相同的语句,则会产生l值错误.

target+buffer打印的价值如何40.

c++

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

乘以时的c ++复合赋值

有没有办法使用复合赋值运算符来实现这样的事情:

a = (a * 10) + b;
Run Code Online (Sandbox Code Playgroud)

最初我尝试了以下内容:

a *= 10 + b;
Run Code Online (Sandbox Code Playgroud)

但这相当于:

a = a * (10 + b)
Run Code Online (Sandbox Code Playgroud)

只是好奇.今天跑过这个.这不是功课.

c++

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

赋值运算符的返回值可以作为参考吗?

我很惊讶今天在同事的代码中看到了一些语法.

void doSomething(bool& boolRef);

bool ok = true;
doSomething(ok = false);
Run Code Online (Sandbox Code Playgroud)

我认为这是一个错误,因为param中的赋值运算符ok = false,返回赋值的值,在本例中为false.由于doSomething期待参考,我的第一反应是"那应该不起作用",因为它看起来几乎完全相同doSomething(false);

但唉它确实有效.并且doSomething像你期望的那样重新分配工作中的引用值.

有人可以解释为什么这有效吗?

谢谢!

c++

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

预增量和后增量

#include<stdio.h> 
int main()
{
    int a = 10;
    ++a = 20;      
    printf("a = %d", a);
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上述代码获得的输出是:a = 20; 当作为C++代码运行时.

#include<stdio.h> 
int main()
{
    int a = 10;
    a++ = 20;      
    printf("a = %d", a);
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这给出了编译错误.这背后的原因是什么?

c pre-increment post-increment

-2
推荐指数
1
解决办法
134
查看次数