小编ana*_*ciu的帖子

为什么“printf()”的这种模棱两可的行为?

我故意强迫printf()打印celsiusint(使用%8d格式说明符)。我知道这是打印的原因0(在标题下Celsius Scale)。

但我只想知道为什么fahr0.0在整个表格中打印。

我用过 GCC 编译器。

这是摄氏度到华氏度转换的代码:

#define LOWER 0.0F
#define UPPER 300.0F
#define STEP 20.0F

#include <stdio.h>

void main() {
    float celsius, fahr;
    printf("*Conversion from Celsius to Fahrenheit*\n");
    printf("Celsius Scale \t   Fahrenheit Scale\n");
    for (celsius = LOWER; celsius <= UPPER; celsius = celsius + STEP) {
        fahr = (9.0f * celsius / 5.0f) + 32.0f; 
        printf("%8d\t\t%5.1f\n", celsius, fahr);
    }
}
Run Code Online (Sandbox Code Playgroud)

下表是上述代码的 …

c floating-point printf

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

关于操作数求值顺序的矛盾

当我从 deitel c 学习 C 中的递归函数时,我读到了这句话:

标准 C 没有指定大多数运算符(包括 +)的操作数的计算顺序。

但书中也说:

'+' 从左到右的结合性

操作数的计算顺序:

操作数的计算顺序

谁能解释一下这是为什么?

c recursion operator-precedence operands c-standard-library

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

禁用 Visual Studio 绿色箭头按钮移动指令指针

最近,当用鼠标悬停时,Visual Studio 在调试时显示一个绿色箭头。

如果你点击它,它会将指令指针移动到那一行,我想。

有没有办法禁用这个功能?

c++ visual-studio visual-studio-debugging

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

C++中的静态函数可以是虚函数吗?

我发现了一些关于我的上述问题的陈述,但有不同的说法:

  1. 静态成员函数无法访问类的非静态数据成员/函数。vPTR 是非静态数据成员,因此静态成员函数无法访问 vPTR。

  2. 不,因为它在 C++ 中没有任何意义。

    当您有一个类实例的指针/引用时,就会调用虚函数。静态函数不绑定到特定实例,而是绑定到类。C++ 没有类指针,因此不存在可以虚拟调用静态函数的场景。

哪一个是正确的,原因是什么?

c++ static

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

接受\r\n输入C程序

我想问一下我怎么能接受\r\n而不把它改成\\r\\n, with fgets.

我希望程序将 转换\r\n为换行符,而不是将其打印为字符串。

当前代码:

char buff[1024];
printf("Msg for server: ");
memset(buff, 0, sizeof(buff));
fgets(buff, sizeof(buff), stdin);
printf(buff);
Run Code Online (Sandbox Code Playgroud)

输入:

test\r\ntest2
Run Code Online (Sandbox Code Playgroud)

我想要的输出:

test
test2
Run Code Online (Sandbox Code Playgroud)

我目前的输出:

test\r\ntest2
Run Code Online (Sandbox Code Playgroud)

c newline fgets carriage-return linefeed

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

MaxLength 数据注释是否适用于 List&lt;T&gt;?

可以将[MaxLength()]属性与字符串和简单数组一起使用:

[MaxLength(500)]
public string ProductName { get; set; }
Run Code Online (Sandbox Code Playgroud)

或者

[MaxLength(50)]
public string [] Products { get; set; }
Run Code Online (Sandbox Code Playgroud)

但是它可以与列表一起使用吗?

[MaxLength(50)]
public List<string> Types { get; set; }
Run Code Online (Sandbox Code Playgroud)

c# list maxlength data-annotations

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

HttpResponseMessage.Content 可以为空吗?

给出表达式:

responseBodyJson = await responseMsg.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud)

知道responseMsg是一个HttpResponseMessage对象并且不为 null,那么Content( HttpContentobject) 是否可以为 null,换句话说,这个表达式可以抛出一个 吗NullReferenceException

c# http httpresponse .net-core .net-core-3.1

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

二维数组作为指向字符数组的指针

我正在使用 C 中的一些代码,并且我试图理解指针和数组之间的关系。您可能知道,当我想制作数组时,可以这样做:

char * arr = "abc";
Run Code Online (Sandbox Code Playgroud)

或者

char arr[] = {'a','b', 'c'};
Run Code Online (Sandbox Code Playgroud)

但是当我想做二维数组时。必须这样做

char arr[3][10];
Run Code Online (Sandbox Code Playgroud)

当我尝试将字符串加载到它时,为什么这样的声明会崩溃。

char * names[3];

for ( int i = 0; i < 3; i++ ) {
    printf("Enter name %d: ", i+1 );
    scanf("%s", names[i]);
}
// print names
printf("\nEntered names are: \n");
for ( int i = 0; i < 3; i++ ) {
    printf("%s\n", names[i] );
}
Run Code Online (Sandbox Code Playgroud)

应该是二维数组吧?因为数组基本上是指针。你能解释一下吗?谢谢。

c arrays pointers

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

为什么需要在索引中添加“0”才能访问数组值?

我对这一行感到困惑:

sum += a[s[i] - '0']; 
Run Code Online (Sandbox Code Playgroud)

给出一些上下文,这是代码的其余部分:

#include <iostream>

using namespace std;

int main() {

    int a[5];
    for (int i = 1; i <= 4; i++)
        cin >> a[i];
    string s;
    cin >> s;
    int sum = 0;
    for (int i = 0; i < s.size(); i++)
        sum += a[s[i] - '0'];
    cout << sum << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ char indices character-set

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

安全地初始化一个 std::array 的布尔值

鉴于此数组声明和初始化:

std::array<bool, 20> invalid_params{};
Run Code Online (Sandbox Code Playgroud)

我可以假设数组中的所有元素都将始终初始化为 false,还是最好明确地进行初始化?

c++ stdarray zero-initialization default-initialization

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