【问题标题】:How to fix "The * or -> operator must be applied to a pointer"?如何解决“必须将 * 或 -> 运算符应用于指针”?
【发布时间】:2020-01-14 17:04:43
【问题描述】:

我正在使用 Visual Studio 2019 研究 C# 中的赋值运算符,但由于错误代码 CS0193,脚本未运行。

首先我改变了“=”等价符号后面的“+”添加符号的位置,就像 { c =+ a } 一样,但它只适用于 add 和 sub。我想使用 { c *= a} 但出现以下错误。

            int a = 21;

            int c =+ a;

            Console.WriteLine("1. Value of c is {0}", c );

            Console.WriteLine("2. Binery of c is {0}", Convert.ToString(c, 2));

            Console.ReadLine();

根据我的书,它应该像 (x -= y), (x += y), (x *= y) .​​.. 但在 Visual Studio 2019 中的工作类似于 (x =- y), (x =+ y), error, error ...

错误代码:CS0193

说明:* 或 -> 运算符必须应用于指针。

【问题讨论】:

  • 上述代码的输出是 1. c 的值是 21 2. c 的二进制是 10101
  • 你提到的书是什么?
  • 你希望int c *= a;做什么?
  • 你的意图是什么“我改变了“+”的位置,在“=”等价符号后面添加符号?你为什么这么做?你期待什么样的行为?
  • 实验行为 ;p

标签: c# visual-studio-2019 assignment-operator


【解决方案1】:

运算符=结尾,而不是以=开头。所以使用*=+=-=/=

当您键入 int c =+ a 时,解析为:

int c = +a; // evuivalent to: int c = a

当您键入 int c =* a 时,会被解析为:

int c = *a; // error unless a is a pointer.

【讨论】:

    【解决方案2】:

    您正在混合声明和赋值。您只能在已声明的变量上使用 *=(以及 +=-=++)。因此,您需要执行以下操作:

    int a = 21;
    
    int c = 1;
    
    c *= a;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-18
      • 2022-08-03
      • 2011-05-14
      • 2021-01-11
      • 2020-10-15
      • 2012-01-23
      • 2013-11-19
      • 2012-01-30
      相关资源
      最近更新 更多