这是逻辑分支,不是计算...跟计算器两码事...ps:如果(5 <2)...明显不合逻辑...

解决方案 »

  1.   

    呵呵。只是随便举个例子。5>3明显是false
      

  2.   

    不会是这个吧?哥哥?
    int i=(4>1?1:0)
      

  3.   

    怪异的问题
    string a=(b>3?"4":"2")
      

  4.   

    表达式树:
    http://topic.csdn.net/u/20091224/01/f0cd205b-cdc3-4dbb-a6b3-7452aedd0650.html
      

  5.   

    开头定义using System.CodeDom;
    using System.CodeDom.Compiler;
    using System.Diagnostics;
    using Microsoft.CSharp;
    using System.IO;加个按钮
    文本框tb_content.Text: 输入计算公式,比如(6*12>2?(1-9):0)
    标签lb_result:显示结果按钮里面代码private void bn_calculate_Click(object sender, EventArgs e)
            {
                string beginTxt = "namespace calculator{class Program{static void Main(string[] args){ System.Console.WriteLine(";
                string endTxt = tb_content.Text + ");}}}";
                CSharpCodeProvider codeProvider = new CSharpCodeProvider();
                ICodeCompiler icc = codeProvider.CreateCompiler();
                string Output = "Out.exe";
                Button ButtonObject = (Button)sender;            System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
                //Make sure we generate an EXE, not a DLL
                parameters.GenerateExecutable = true;
                parameters.OutputAssembly = Output;
                CompilerResults results = icc.CompileAssemblyFromSource(parameters, beginTxt+endTxt);             if (results.Errors.Count > 0)
                {
                    lb_result.ForeColor = Color.Red;
                    foreach (CompilerError CompErr in results.Errors)
                    {
                        lb_result.Text = lb_result.Text +
                                    "Line number " + CompErr.Line +
                                    ", Error Number: " + CompErr.ErrorNumber +
                                    ", '" + CompErr.ErrorText + ";" +
                                    Environment.NewLine + Environment.NewLine;
                    }
                }
                else
                {
                    string myString = "Noting";
                    //Successful Compile
                    lb_result.ForeColor = Color.Blue;
                    lb_result.Text = "Success!";
                    
                    Process myProcess = new Process();
                    ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(Output);
                    myProcessStartInfo.UseShellExecute = false;
                    myProcessStartInfo.RedirectStandardOutput = true;
                    myProcess.StartInfo = myProcessStartInfo;
                    myProcess.Start();                StreamReader myStreamReader = myProcess.StandardOutput;
                    // Read the standard output of the spawned process.
                    myString = myStreamReader.ReadToEnd();
                   
                    myProcess.Close();
                    lb_result.Text = myString;            }        }
    结果就是:
      

  6.   

    // SuperCalc.cs - 超级计算器
    // 编译方法: csc /t:winexe SuperCalc.cs VBExpression.csusing System;
    using System.Windows.Forms;
    using Skyiv.Util;namespace Skyiv
    {
      class Calc : Form
      {
        TextBox tbxA1;
        TextBox tbxA3;    Calc()
        {
          Text              = "Super Calculator";
          StartPosition     = FormStartPosition.CenterScreen;
          Width             = 300;
          Height            = 300;      tbxA1             = new TextBox();
          tbxA1.Parent      = this;
          tbxA1.Multiline   = true;
          tbxA1.WordWrap    = false;
          tbxA1.Dock        = DockStyle.Fill;
          tbxA1.BorderStyle = BorderStyle.FixedSingle;      Panel pnlA1       = new Panel();
          pnlA1.Parent      = this;
          pnlA1.Height      = 22;
          pnlA1.Dock        = DockStyle.Top;      tbxA3             = new TextBox();
          tbxA3.Parent      = pnlA1;
          tbxA3.Dock        = DockStyle.Fill;
          tbxA3.BorderStyle = BorderStyle.FixedSingle;
          tbxA3.ReadOnly    = true;      Button btnA3      = new Button();
          btnA3.Text        = "&Calculate";
          btnA3.Parent      = pnlA1;
          btnA3.Width       = 80;
          btnA3.Dock        = DockStyle.Left;
          btnA3.Click      += new EventHandler(Calc_Clicked);
        }    void Calc_Clicked(object sender, EventArgs ea)
        {
          (sender as Control).Enabled = false;
          try
          {
            tbxA3.Text = (new Expression(tbxA1.Text)).Compute().ToString();
          }
          catch (Exception ex)
          {
            MessageBox.Show(ex.Message, "Error");
          }
          finally
          {
            (sender as Control).Enabled = true;
          }
        }    [STAThread]
        static void Main(string [] args)
        {
          Application.Run(new Calc());
        }
      }
    }// VBExpression.cs - 动态生成数学表达式并计算其值
    // 表达式使用 Visual Baisc 语法
    // 可使用 pi、e 等常量,sin、cos、tan、log、sqrt 等函数using System;
    using System.CodeDom.Compiler;
    using Microsoft.VisualBasic;
    using System.Reflection;
    using System.Text;
    using System.Globalization;namespace Skyiv.Util
    {
      sealed class Expression
      {
        object instance;
        MethodInfo method;    public Expression(string expression)
        {
          if (expression.ToUpper(CultureInfo.InvariantCulture).IndexOf("RETURN") < 0)
          {
            expression = "Return " + expression.Replace(Environment.NewLine, " ");
          }
          string className = "Expression";
          string methodName = "Compute";
          CompilerParameters p = new CompilerParameters();
          p.GenerateInMemory = true;
          CompilerResults cr = new VBCodeProvider().CompileAssemblyFromSource
          (
            p,
            string.Format
            (
              @"Option Explicit Off
              Option Strict Off
              Imports System, System.Math, Microsoft.VisualBasic
              NotInheritable Class {0}
              Public Function {1} As Double
              {2}
              End Function
              End Class",
              className, methodName, expression
            )
          );
          if(cr.Errors.Count > 0)
          {
            string msg = "Expression(\"" + expression + "\"): \n";
            foreach (CompilerError err in cr.Errors) msg += err.ToString() + "\n";
            throw new Exception(msg);
          }
          instance = cr.CompiledAssembly.CreateInstance(className);
          method = instance.GetType().GetMethod(methodName);
        }    public double Compute()
        {
          return (double)method.Invoke(instance, null);
        }
      }
    }
      

  7.   

    如果需要 C# 语法的,使用下面这个:
    // Expression.cs - 动态生成数学表达式并计算其值 
    // 表达式使用 C# 语法,可带一个的自变量(x)。 
    // 表达式的自变量和值均为(double)类型。 
    // 使用举例: 
    //   Expression expression = new Expression("Math.Sin(x)"); 
    //   Console.WriteLine(expression.Compute(Math.PI / 2)); 
    //   expression = new Expression("double u = Math.PI - x;" + 
    //     "double pi2 = Math.PI * Math.PI;" + 
    //     "return 3 * x * x + Math.Log(u * u) / pi2 / pi2 + 1;"); 
    //   Console.WriteLine(expression.Compute(0)); 
     
    using System; 
    using System.CodeDom.Compiler; 
    using Microsoft.CSharp; 
    using System.Reflection; 
    using System.Text; 
     
    namespace Skyiv.Util 

      sealed class Expression 
      { 
        object instance; 
        MethodInfo method; 
         
        public Expression(string expression) 
        {   
          if (expression.IndexOf("return") < 0) expression = "return " + expression + ";"; 
          string className = "Expression"; 
          string methodName = "Compute"; 
          CompilerParameters p = new CompilerParameters(); 
          p.GenerateInMemory = true; 
          CompilerResults cr = new CSharpCodeProvider().CompileAssemblyFromSource(p, string. 
            Format("using System;sealed class {0}{{public double {1}(double x){{{2}}}}}", 
            className, methodName, expression)); 
          if(cr.Errors.Count > 0) 
          { 
            string msg = "Expression(\"" + expression + "\"): \n"; 
            foreach (CompilerError err in cr.Errors) msg += err.ToString() + "\n"; 
            throw new Exception(msg); 
          } 
          instance = cr.CompiledAssembly.CreateInstance(className); 
          method = instance.GetType().GetMethod(methodName); 
        } 
         
        public double Compute(double x) 
        { 
          return (double)method.Invoke(instance, new object [] { x }); 
        } 
      } 
      

  8.   

               if() // 如果
                {
                    // 那么
                }            
               else
              {
                    // 否则
                }
      

  9.   

    简单点 if else就可以了
      

  10.   

    我实现了一个,好像与标准语法的不同,回避了什么符号栈等等问题,算法通俗易懂哦。优先级的运算也是非常的简单。如果需要代码,可向本人联系。因为本人已经将代码转换到了PB,因此C#部分没有继续维护。
      

  11.   

    用堆栈,把这个中缀表达式改为后缀表达式..(根据运算符的优先级)
    基础的算法书里面都有!
    我用Java实现过一个计算器.
      

  12.   

    5>3是false,那么3>5就是True了?
      

  13.   

                string a = "如果(5>3)那么(a=4)否则(a=2)";
                a = a.Replace("如果", "if");
                a = a.Replace("那么", "{");
                a = a.Replace("否则", ";}else{");
                a = a + ";}";
    然后包在一个静态方法里,用C#动态编译去执行。至于if嵌套,自己去解析吧。
      

  14.   

    简单点 if else就可以了