The complexity of the logical expression (A && B) && C is 2 (the number of && and ~ ~ operators in the expression), Thus, NP(if-else) = 1 +1 + 2 = 4.
The acyclic execution path complexity for any logical expression is
NPATH can be reduced for a function with a high count of and (&&) and or (~ ~) operators in a logical expression by creating a separate function for the logical expression.
The new separate function for the logical expression looks like the following:
The complexity of logical expressions can have a tremendous impact on the number of execution paths in a function.
Given any two logical expressions <expr1> and <expr 2> governing the execution of two different sequential sequences of code, if <expr1> is identical to <expr2> or <expr 1> is not logically equivalent to (expr2), and the values of the control variables in <expr 1> and <expr2> are the same, then the NPATH measure overstates the acyclic execution path complexity by a factor of 2.
Frege gives relatively rigorous, if not entirely systematic, semantical explications of his logical expressions. His explications systematically track semantical, if not necessarily model-theoretic, exposition.
This view of the sense of conjunctions would depend on a fairly (and I think implausibly) coarse-grained conception of the senses of logical expressions in ordinary language.