标签: parentheses

如何以编程方式将表达式括起来?

我对一个简单的程序有一个想法,这将帮助我在C语言中使用运算符优先级.最困难的部分是括号表达式.例如,我想要这个:

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

转换为:

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

我在这些步骤中手动完成的操作:

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

以编程方式完成此操作的最佳方法是什么?我可以使用的解决方案吗?我更喜欢用PHP,C,C++,Python或Ruby来做这件事.

(这不是我的计划的全部想法,它只是第一步.)

algorithm parsing operator-precedence parentheses

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

获取方括号的内容,避免嵌套括号

(第一次海报,谷歌的长期访客)

我正在尝试提取一些方括号的内容,但是我有一点麻烦.我已经让它适用于圆括号,如下所示,但我看不出它应该如何修改以适用于方括号.我本以为在这个例子中替换正方形的圆形反之亦然,但显然不行.

它需要忽略括号内的括号.所以它不会返回(11)但会返回(10(11)12).

$preg = '#\(((?>[^()]+)|(?R))*\)#x';
$str = '123(456)(789)(10(11)12)';

if(preg_match_all($preg, $str, $matches)) {
    $matches = $matches[0];
} else {
    $matches = array();
}

echo '<pre>'.print_r($matches,true).'</pre>';

This returns:

Array (
    [0] => (456)
    [1] => (789)
    [2] => (10(11)12)
)
Run Code Online (Sandbox Code Playgroud)

哪个是完美的.但是,如何才能使用方括号代替字符串,例如:

$str = '123[456][789][10[11]12]'; 
Run Code Online (Sandbox Code Playgroud)

php regex recursion parentheses preg-match

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

为什么没有参数的PHP函数需要括号?

我只花了3个小时想知道为什么我不能开始一个会话,然后意识到我用过:

session_start;
Run Code Online (Sandbox Code Playgroud)

当我应该使用时:

session_start();
Run Code Online (Sandbox Code Playgroud)

我没有收到任何错误消息!

也许那时候,我想,这是一种将函数与变量区分开来的懒惰方式 - 但后来记得它不能像变量那样需要$

任何人都可以告诉我为什么需要括号,以及为什么不使用它们时没有错误?

php function parentheses

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

JavaScript括号(1,2,3,4,5)

我只是在JavaScript中遇到了一些符号:

var a = (1,2,3,4,5);
Run Code Online (Sandbox Code Playgroud)

在上述情况下,这将始终返回最后一个值5.我知道使用括号来命名我的JavaScript代码,但从未见过它以这种方式使用.

这种符号有什么用处,还是只是一些JavaScript副产品?

javascript closures namespaces parentheses

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

括号内的Swift类型

今天我和Swift一起玩,一些奇怪的类型开始出现:

let flip = Int(random()%2)  //or arc4random(), or rand(); whatever you prefer
Run Code Online (Sandbox Code Playgroud)

如果我输入flipXcode 6(Beta 2),弹出自动完成,并说flip是类型(Int)而不是Int.

这很容易改变:

let flip : Int = Int(random()%2)
let flop = random()%2
Run Code Online (Sandbox Code Playgroud)

现在翻转和翻牌都是类型Int而不是(Int)

更多地使用它,这些"括号类型"是可预测的,你可以通过在变量赋值的任何部分添加额外的括号来引起它们.

let g = (5)      //becomes type (Int)
Run Code Online (Sandbox Code Playgroud)

你甚至可以在类型中引起额外的括号!

let h = ((5))    //becomes type ((Int))
let k = (((5)))  //becomes type (((Int)))
//etc.
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:这些括号类型(Int)和类型之间有什么区别Int

types parentheses swift

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

我们可以删除C宏定义中参数周围的括号吗?

http://c-faq.com/style/strcmp.html,我学到了以下便利宏:

#define Streq(s1, s2) (strcmp((s1), (s2)) == 0)
Run Code Online (Sandbox Code Playgroud)

我想知道为什么在这个宏中使用了这么多括号.每个括号是用于某个目的还是使用冗余括号的宏,这些括号没有用处?

我们可以删除周围的括号s1s2像这样制作一个宏吗?

#define MyStreq(s1, s2) (strcmp(s1, s2) == 0)
Run Code Online (Sandbox Code Playgroud)

这个MyStreq宏似乎对我很有用Streq.

#include <string.h>
#include <stdio.h>

#define Streq(s1, s2) (strcmp((s1), (s2)) == 0)
#define MyStreq(s1, s2) (strcmp(s1, s2) == 0)

int main()
{
    printf("%d %d\n", Streq("foo", "foo"), MyStreq("foo", "foo"));
    printf("%d %d\n", Streq("fox", "foo"), MyStreq("fox", "foo"));
    printf("%d %d\n", Streq("foo", "fox"), MyStreq("foo", "fox"));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面代码的输出:

1 1
0 0
0 0
Run Code Online (Sandbox Code Playgroud)

你能想象这些宏的使用在哪里Streq可以实现人们所期望的但却 …

c macros parentheses c-preprocessor

3
推荐指数
2
解决办法
922
查看次数

为什么我会调用函数名称包含在parens中的函数?

我最近遇到的代码看起来像这样:

void function(int a, int b, int c){
  //...
}

int main(){
  //...
  (function)(1,2,3);
  //...
}
Run Code Online (Sandbox Code Playgroud)

在parens中单独包装函数名称有什么意义?
它有什么不同的影响function(1,2,3);吗?

为什么语言允许这样的语法?

c++ syntax function parentheses function-call

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

为什么在括号中包含增量运算符没有区别?

为什么会这样,文档备份在哪里呢?

我的老师坚持认为"z =(y ++)"应首先执行y ++,然后将结果归因于z.

像这样:

int z, y = 10;
z = (y++);
printf("%d", z); //z = 10 or 11? and why?
Run Code Online (Sandbox Code Playgroud)

谢谢.

c increment parentheses

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

ReverseParentheses - Codefights

我正忙着用JavaScript解决这个问题

您将获得一个字符串s,其中包含英文字母,标点符号,空格字符和括号.保证s中的括号形成常规括号序列.

你的任务是从最里面的一个开始,反转每对匹配括号中的字符串.

对于字符串"s = a(bc)de",输出应为

reverseParentheses(s)="acbde".

输入输出

[时间限制] 4000ms(js)[输入]字符串s

由英文字母,标点符号,空格字符和括号组成的字符串.保证括号形成常规括号序列.

约束:

5≤x.length≤55.

[输出]字符串

它必须使用以下输入:

  1. s: "a(bcdefghijkl(mno)p)q" 预期输出: "apmnolkjihgfedcbq"
  2. s: "co(de(fight)s)" 预期输出: "cosfighted"

reverse parentheses

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

获取匹配括号的索引

嗨,我正在尝试打印以下括号模式的索引:

((((((...)))(((...))))))
Run Code Online (Sandbox Code Playgroud)

如下:

0 23
1 22
2 21
3 11
4 10
5 9
12 20
13 19
14 18
Run Code Online (Sandbox Code Playgroud)

我尝试使用下面给出的此perl代码来实现此目的:

#!/usr/bin/perl
use strict;
use warnings;

my $string = '((((((...)))(((...))))))';
my @myarray = split('', $string); 
my @stack;
my @stack1;



while (my ($index, $element) = each(@myarray))
{

   if ($element eq '(')
   {
   push(@stack, $index);  
   }

   if ($element eq ')')
   {
   push(@stack1, $index);  
   }  
}


print "$stack[$_]-$stack1[$_]\n" for (0 .. $#stack);
Run Code Online (Sandbox Code Playgroud)

但是上面的代码给了我以下输出,这不是必需的输出:

0-9
1-10
2-11
3-18
4-19
5-20
12-21
13-22
14-23 …
Run Code Online (Sandbox Code Playgroud)

arrays perl parentheses

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